【发布时间】:2020-06-01 23:03:55
【问题描述】:
我正在尝试使用 where 从我的数据库中检索数据。用户输入他们想要邀请的电子邮件,然后发送邀请。但是没有文件被退回。这是我用来检索的代码:
await props.firestore
.collection("users")
.where("email", "==", state.inviteEmail)
.get()
.then((doc) => {
if (!doc.exists) {
props.showMsg(
"No user with that email exists. Make sure you've entered it correctly"
);
} else {
// This is where it goes if it works
alert("It works");
}
});
我尝试将 where 替换为 .doc(any id) 并且它可以正常工作,因此我知道数据库已正确连接。这是数据库的视图:
我使用的是 Reactjs,而数据库使用的是 Firebase
编辑:对于其他有同样问题的人,这是我所做的更改:
await props.firestore
.collection("users")
.where("email", "==", state.inviteEmail)
.get()
.then((doc) => {
if (doc.empty) {
props.showMsg(
"No user with that email exists. Make sure you've entered it correctly"
);
} else {
alert("This emails username: "+doc.docs[0].data().username);
}
});
数据以 QuerySnapshot 的形式返回,类似于数组,因此它需要是 doc.docs[0].data 而不是 doc.Data()。因为我只有一个保证返回的文档,所以我只抓取了第一个元素,但如果我有多个元素,我将不得不使用 foreach。
【问题讨论】:
-
我只在标题中添加了“解决”这个词,因为我在其他问题上看到了它。我还包括了我的问题的解决方案,因为我觉得解释为什么我首先遇到这个问题很有帮助。每当我在这个网站上遇到问题时,不得不通过多个链接来弄清楚他们如何解决他们的问题可能会令人沮丧,所以我觉得如果我把解决方案放到我的网站上,它可能会在未来更有效地帮助其他人。我不知道堆栈溢出有这样的规则
-
没关系。这就是为什么我解释了什么和为什么。有关此主题的一些讨论,您可能会发现更可信:meta.stackexchange.com/questions/31809/…
-
哦,我明白了,我明白你的意思。 Tbh 我没有意识到我可以就自己的问题发布答案
标签: node.js reactjs firebase google-cloud-firestore