我正在使用Firebase函数和Firebase Firestore开发用于存储用户数据的API。
我想使用存储在文档字段中的属性来查找文档。 This是Firebase文档,其中说明了如何实现这一目标。
// Create a reference to the cities collection
var citiesRef = db.collection('cities');
// Create a query against the collection
var queryRef = citiesRef.where('state', '==', 'CA');
我想处理两种情况
没有符合条件的文件
当前条件超过两个的文档
如何处理以上两种情况?
答案 0 :(得分:2)
根据上面的评论中的“讨论”,在Cloud Function中,您可以使用QuerySnapshot
方法返回的get()
进行以下操作:
admin.firestore().collection("cities")
.where('state', '==', 'CA')
.get()
.then(querySnapshot => {
if (querySnapshot.size == 0) {
console.log("0 documents");
} else if (querySnapshot.size > 2) {
console.log("More than 2 documents");
}
});
如上所述,请注意,这将花费阅读集合中每个文档的成本。如果您有一个非常大的集合,则可以编写一个Cloud Function,每次在该集合中添加文档或从中删除文档时都会更新计数器。
答案 1 :(得分:0)
接受的答案没有显示如何从每个文档中提取数据,imo 只是答案的一半。以下内容将使您遍历每个文档并提取数据。
db.collection("cities").get().then(function(querySnapshot) {
querySnapshot.forEach(function(doc) {
// doc.data() is never undefined for query doc snapshots
console.log(doc.id, " => ", doc.data());
});
});