如何在 Firebase 的 Cloud Firestore 中执行查询
How to perform a query in Firebase's Cloud Firestore
我遵循了关于如何编写查询的文档 here,但我没有从中获取任何数据。数据库中已经填充了文档
提供的示例
下面是我的代码
var db = firebase.firestore();
var citiesRef = db.collection("cities");
var query = citiesRef.where("state", "==", "CA");
query.get().then(function(doc) {
if (doc.exists) {
console.log("Document data:", doc.data());
} else {
console.log("No such document!");
}
}).catch(function(error) {
console.log("Error getting document:", error);
});
如果我不对其进行任何查询,它就可以正常工作。例如(也来自文档):
var docRef = db.collection("cities").doc("SF");
docRef.get().then(function(doc) {
if (doc.exists) {
console.log("Document data:", doc.data());
} else {
console.log("No such document!");
}
}).catch(function(error) {
console.log("Error getting document:", error);
});
你的两个请求的不同之处在于,在第二种情况下,你正在检索一个文件,它给你一个 DocumentSnapshot
,其中有 exists
属性 和 data()
方法。
在您不工作的示例中,您执行了一个查询,它为您提供了一个必须与 DocumentSnapshot
不同处理的 QuerySnapshot
。您得到的不是单个文档,而是 list/collection 个文档。您可以使用 empty
或 size
属性检查是否已检索到数据,然后使用 forEach
方法或通过 docs
数组查看结果:
var db = firebase.firestore();
var citiesRef = db.collection("cities");
var query = citiesRef.where("state", "==", "CA");
query.get().then(function(results) {
if(results.empty) {
console.log("No documents found!");
} else {
// go through all results
results.forEach(function (doc) {
console.log("Document data:", doc.data());
});
// or if you only want the first result you can also do something like this:
console.log("Document data:", results.docs[0].data());
}
}).catch(function(error) {
console.log("Error getting documents:", error);
});
我遵循了关于如何编写查询的文档 here,但我没有从中获取任何数据。数据库中已经填充了文档
提供的示例下面是我的代码
var db = firebase.firestore();
var citiesRef = db.collection("cities");
var query = citiesRef.where("state", "==", "CA");
query.get().then(function(doc) {
if (doc.exists) {
console.log("Document data:", doc.data());
} else {
console.log("No such document!");
}
}).catch(function(error) {
console.log("Error getting document:", error);
});
如果我不对其进行任何查询,它就可以正常工作。例如(也来自文档):
var docRef = db.collection("cities").doc("SF");
docRef.get().then(function(doc) {
if (doc.exists) {
console.log("Document data:", doc.data());
} else {
console.log("No such document!");
}
}).catch(function(error) {
console.log("Error getting document:", error);
});
你的两个请求的不同之处在于,在第二种情况下,你正在检索一个文件,它给你一个 DocumentSnapshot
,其中有 exists
属性 和 data()
方法。
在您不工作的示例中,您执行了一个查询,它为您提供了一个必须与 DocumentSnapshot
不同处理的 QuerySnapshot
。您得到的不是单个文档,而是 list/collection 个文档。您可以使用 empty
或 size
属性检查是否已检索到数据,然后使用 forEach
方法或通过 docs
数组查看结果:
var db = firebase.firestore();
var citiesRef = db.collection("cities");
var query = citiesRef.where("state", "==", "CA");
query.get().then(function(results) {
if(results.empty) {
console.log("No documents found!");
} else {
// go through all results
results.forEach(function (doc) {
console.log("Document data:", doc.data());
});
// or if you only want the first result you can also do something like this:
console.log("Document data:", results.docs[0].data());
}
}).catch(function(error) {
console.log("Error getting documents:", error);
});