【发布时间】:2021-04-24 06:19:48
【问题描述】:
我编写了一个用于向我的数据库发送查询并检索结果的函数。但是如果它在数据库中没有找到任何东西,它既不返回 undefined 也不返回 null。
因此,我无法处理数据库中是否存在数据。
这个函数的返回值是多少?
代码:
usersRef
.where("nickname", "==", nickname)
.get()
.then((querySnapshot) => {
querySnapshot.forEach((doc) =>
doc.data() ? console.log("a") : console.log("b")
);// i wrote this line for testing the issue
querySnapshot.size == 0 ? (flag = true) : (flag = false);
})
.catch((err) => console.log("err2"))
如果数据库中存在数据,则打印a,但如果不存在,则不打印任何内容,既不打印a,也不打印b。
我在我的 React-Native 项目中使用了该代码,它还使用了 Firebase Firestore 数据库,usersRef 表示:
const db = firebase.firestore();
const usersRef = db.collection("Users");
注意:querySnapshot 始终返回 JSON 格式的 firebase 对象。 forEach中的doc参数如果以JSON格式存在则返回一个对象,否则无法处理。
注2:我也试过doc.data()== null或doc.data()== undefined或doc.data()== ""。但他们不会在console.log() 中打印任何内容。我也试过console.log(doc.data()),没有任何改变。
【问题讨论】:
-
console.log(doc.data())没有记录任何内容吗? -
如果数据存在于我的数据库中,它会返回数据,否则不会记录。@Daniel_Knights
-
您是否在在
forEach之外登录?我看不到任何事情发生的唯一原因是querySnapshot的长度为0
标签: javascript node.js firebase google-cloud-firestore