在Firestore中,您可以使用按键(key)来查找文档。以下是几种常见的方法来根据按键查找文档:
get()
方法和文档引用如果您知道文档的完整路径(即集合名称和文档ID),可以直接创建一个文档引用并使用get()
方法来获取文档。
const firebase = require('firebase/app');
require('firebase/firestore');
// Initialize Firebase
const firebaseConfig = {
// Your Firebase config here
};
firebase.initializeApp(firebaseConfig);
const db = firebase.firestore();
// Document reference
const docRef = db.collection('yourCollectionName').doc('yourDocumentId');
// Get the document
docRef.get().then((doc) => {
if (doc.exists) {
console.log('Document data:', doc.data());
} else {
console.log('No such document!');
}
}).catch((error) => {
console.log('Error getting document:', error);
});
where()
方法和==
操作符如果您想要根据某个字段的值来查找文档,可以使用where()
方法和==
操作符。但是,请注意,Firestore的查询是基于索引的,因此这种方法可能不如直接使用文档引用高效。
const firebase = require('firebase/app');
require('firebase/firestore');
// Initialize Firebase
const firebaseConfig = {
// Your Firebase config here
};
firebase.initializeApp(firebaseConfig);
const db = firebase.firestore();
// Query using where() and ==
db.collection('yourCollectionName').where('yourFieldName', '==', 'yourFieldValue')
.get().then((querySnapshot) => {
querySnapshot.forEach((doc) => {
console.log(`${doc.id} => ${doc.data()}`);
});
}).catch((error) => {
console.log('Error getting documents:', error);
});
doc()
方法和查询参数如果您想要根据多个字段的值来查找文档,可以使用doc()
方法和查询参数。这种方法类似于方法2,但更加灵活。
const firebase = require('firebase/app');
require('firebase/firestore');
// Initialize Firebase
const firebaseConfig = {
// Your Firebase config here
};
firebase.initializeApp(firebaseConfig);
const db = firebase.firestore();
// Query using doc() and query parameters
db.collection('yourCollectionName').where('yourFieldName1', '==', 'yourFieldValue1')
.where('yourFieldName2', '==', 'yourFieldValue2')
.get().then((querySnapshot) => {
querySnapshot.forEach((doc) => {
console.log(`${doc.id} => ${doc.data()}`);
});
}).catch((error) => {
console.log('Error getting documents:', error);
});
请注意,Firestore的查询是基于索引的,因此在执行查询之前,请确保您已经为查询创建了适当的索引。您可以在Firebase控制台的“Firestore”部分查看和管理索引。
领取专属 10元无门槛券
手把手带您无忧上云