Cloud Firestore 集合查询不起作用
Posted
技术标签:
【中文标题】Cloud Firestore 集合查询不起作用【英文标题】:Cloud Firestore collections queries not working 【发布时间】:2018-03-18 08:16:45 【问题描述】:由于 Cloud Firestore 是新的,我在使用它时遇到了问题。
我必须得到所有用户的集合并遍历它。但它不起作用。
db.collection("users").get().then(function(querySnapshot)
console.log(querySnapshot.data());
);
上面写着:
querySnapshot.data 不是函数
以下代码:
callFireBase(mobileToCheck)
db.collection("users").where("mobile_no", '==', mobileToCheck).get().then(function(querySnapshot)
if (querySnapshot.exists)
var userData = querySnapshot.data();
var userId = querySnapshot.id;
console.log(mobileToCheck + "Exist In DB");
else
console.log(mobileToCheck + "Do Not Exist In DB");
);
总是打印
923052273575 不存在于数据库中
即使存在,请参阅下图以供参考。
【问题讨论】:
@Noman Ali 你得到这些查询的解决方案了吗 【参考方案1】:我认为您有些困惑,因为 querySnapshot 没有 data
,但它确实有 docs
有数据。
在您的第一个示例中,您要求它返回集合中的所有文档。你会想要这样的东西:
db.collection("users").get().then(function(querySnapshot)
querySnapshot.forEach(function(doc)
console.log(doc.id, " => ", doc.data());
);
);
主要区别在于循环遍历 querySnapshot
中的文档并通过控制台记录每个文档中的数据。
对于第二个示例,您需要检查 querySnapshot
是否为空,而不是检查它是否存在。
db.collection("users").where("mobile_no", "==", mobileToCheck)
.get()
.then(function(querySnapshot)
if (querySnapshot.exists)
querySnapshot.forEach(function(doc)
console.log(doc.id, " => ", doc.data());
var userData = doc.data()
var userId = doc.id
console.log(mobileToCheck + "Exist In DB");
);
else
console.log(mobileToCheck + "Do Not Exist In DB");
;
)
.catch(function(error)
console.log("Error getting documents: ", error);
);
【讨论】:
@Dan McGrath 我已经使用了上面的查询但是对我来说它总是说用户不存在。但数字在数据库中。有什么问题以上是关于Cloud Firestore 集合查询不起作用的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Cloud Firestore 中使用文档 ID 执行集合组查询
无法在 Android 上使用 Cloud Firestore 保存文档
我可以使用 where equals 子句和 orderby 查询 Cloud Firestore 集合吗?