Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/43.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Firebase查询不返回任何内容_Javascript_Node.js_Firebase_Google Cloud Firestore - Fatal编程技术网

Javascript Firebase查询不返回任何内容

Javascript Firebase查询不返回任何内容,javascript,node.js,firebase,google-cloud-firestore,Javascript,Node.js,Firebase,Google Cloud Firestore,我编写了一个函数,用于向数据库发送查询并检索结果。但是,如果在数据库中找不到任何内容,它将不返回任何内容,即undefined或null 因此,我无法处理数据库中是否存在数据 这个函数的返回值是多少 代码: usersRef .where("nickname", "==", nickname) .get() .then((querySnapshot) => { querySnapshot.forEach((doc) =>

我编写了一个函数,用于向数据库发送查询并检索结果。但是,如果在数据库中找不到任何内容,它将不返回任何内容,即
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原生项目中使用了该代码,它还使用了Firebase Firestore数据库,
usersRef
表示:

const db = firebase.firestore();
const usersRef = db.collection("Users");

注意:querySnapshot始终以JSON格式返回firebase对象。如果对象以JSON格式存在,则
forEach
中的
doc
参数将返回一个对象,如果不是,则无法处理该对象

注2:我还尝试了
doc.data()==null
doc.data()==undefined
doc.data()==”
。但它们不会在
console.log()中打印任何内容。我还尝试了
console.log(doc.data())
,但没有任何更改

如果数据存在于数据库中,则打印a,但如果不存在,则不打印a或b

这是因为您正在查询数据库并获取一个数组。如果数组中有一个或多个项,则
.forEach
调用将遍历这些项并执行三元表达式,从而生成控制台日志调用
a
b
。但是,如果数组为空,则
.forEach
将没有任何可迭代的内容,因此传递给它的函数将永远不会执行

[].forEach(item=>console.log(item))//无
[1] .forEach(项=>console.log(项))//1
所以问题是,您的数据库查询在Windows框中返回为空。检查您的
标志
变量或
.size
成员,您应该查看是否存在这种情况:

usersRef
.其中(“昵称”,“昵称”)
.get()
.然后((querySnapshot)=>{
querySnapshot.forEach((doc)=>
doc.data()?console.log(“a”):console.log(“b”)
);
querySnapshot.size==0?(标志=true):(标志=false);
console.log(querySnapshot.size);
})
.catch((err)=>console.log(“err2”))

是否
console.log(doc.data())
不记录任何内容?如果数据存在于我的数据库中,它将返回数据,否则它不会记录。@Daniel_Knights您是否在
forEach
之外记录?我看不到任何事情发生的唯一原因是
querySnapshot
的长度为
0