从Firebase Firestore获取数据

从Firebase Firestore获取数据,firebase,google-cloud-firestore,where-clause,Firebase,Google Cloud Firestore,Where Clause,Javascript。 这项工作: var snapshot = db.collection('xyz').doc("ABCD").get().then((snapshot) => {... 省略的代码将ABCD的内容传递到console.log 但这并不是: var snapshot = db.collection("xyz").where("ownkey","==","ABCD").g

Javascript。 这项工作:

var snapshot = db.collection('xyz').doc("ABCD").get().then((snapshot) => {...
省略的代码将ABCD的内容传递到console.log 但这并不是:

var snapshot = db.collection("xyz").where("ownkey","==","ABCD").get().then((snapshot) => {...}

snapshot.exists测试失败。我已经检查了明显的情况,ownkey中的字母与文档相符,我被卡住了。请提供帮助。

从这两个代码返回的对象实例不同

  • 通过使用
    .doc()
  • 将返回的值是包含您请求的单个文档的数据的实例


  • 通过使用
    .where()
  • 这意味着您希望搜索某些内容,它将返回数据作为的实例。它可以像数组一样包含0个或多个文档数据。(此实例不包含
    .exists
    属性,因此可能无法通过测试)

    因此,如果要检查搜索是否找到了某些内容(包含一个或多个文档数据),可以使用来检查它

    snapshot.empty
    
    或者,如果要从中检索数据,则可能需要使用从该实例循环出所有数据

    snapshot.forEach(docSnap=>{
    //docSnap类似于普通的DocumentSnapshot。
    })
    
    将从这两个代码返回的对象实例不同

  • 通过使用
    .doc()
  • 将返回的值是包含您请求的单个文档的数据的实例


  • 通过使用
    .where()
  • 这意味着您希望搜索某些内容,它将返回数据作为的实例。它可以像数组一样包含0个或多个文档数据。(此实例不包含
    .exists
    属性,因此可能无法通过测试)

    因此,如果要检查搜索是否找到了某些内容(包含一个或多个文档数据),可以使用来检查它

    snapshot.empty
    
    或者,如果要从中检索数据,则可能需要使用从该实例循环出所有数据

    snapshot.forEach(docSnap=>{
    //docSnap类似于普通的DocumentSnapshot。
    })
    
    除此之外,我还建议养成在代码中使用
    docSnap
    /
    docSnapshot
    querySnapshot
    的习惯,而不仅仅是
    snapshot
    。如果您包括文档内容,例如
    userDocSnap
    postDocSnap
    ,则更好。这非常有用-如果没有专家询问,很难在firebase中找到这些皱纹。非常感谢。更新:这起作用了。感谢您除此之外,我还建议您养成在代码中使用
    docSnap
    /
    docSnapshot
    querySnapshot
    的习惯,而不仅仅是
    snapshot
    。如果您包括文档内容,例如
    userDocSnap
    postDocSnap
    ,则更好。这非常有用-如果没有专家询问,很难在firebase中找到这些皱纹。非常感谢。更新:这起作用了。非常感谢。