2017-10-11 243 views
1

这里是我的数据的图片: enter image description here火力地堡云公司的FireStore查询没有找到我的文档

我试图得到该文档。这工作:

var docRef = db.collection('users').doc('jPDKwHyrFNXNTFI5qgOY'); 
docRef.get().then(function(doc) { 
    if (doc.exists) { 
    console.log("Document data:", doc.data()); 
    } else { 
    console.log("No such document!"); 
    } 
}).catch(function(error) { 
    console.log("Error getting document:", error); 
}); 

它返回:

enter image description here

即,如果我知道文档的关键,我可以得到该文档。

这不起作用:

db.collection('users').where('uid', '==', 'bcmrZDO0X5N6kB38MqhUJZ11OzA3') 
.get().then(function(querySnapshot) { 
    if (querySnapshot.exists) { 
    console.log(querySnapshot.data); 
    } else { 
    console.log("No such document!"); 
    } 
}) 
.catch(function(error) { 
    console.log("Error getting document: ", error); 
}); 

它只是返回No such document!这有什么错我的查询?

+0

请用于代码的语言标记。这是JavaScript。 – tadman

回答

3

两个请求的不同之处在于,在第一种情况下,您将检索一个文档,该文档为您提供了一个DocumentSnapshot,该文档具有exists属性和data()方法。

在你做一个查询第二种情况下,它给你一个QuerySnapshot必须被从DocumentSnapshot不同的处理。您可以获取文档列表/文档集合,而不是单个文档。您可以检查数据是否已经被使用emptysize性检索,然后通过结果使用forEach方法或通过docs阵列打算去:

db.collection('users').where('uid', '==', 'bcmrZDO0X5N6kB38MqhUJZ11OzA3') 
.get().then(function(querySnapshot) { 
    if (querySnapshot.size > 0) { 
    // Contents of first document 
    console.log(querySnapshot.docs[0].data()); 
    } else { 
    console.log("No such document!"); 
    } 
}) 
.catch(function(error) { 
    console.log("Error getting document: ", error); 
}); 
+0

谢谢,但它仍然无法正常工作。用你的代码,我得到这个错误信息:“NOT_FOUND,这个文件不存在。在调用doc.data()之前检查doc.exists以确保文件存在。”我试着添加“console.log(querySnapshot.exists);”并回到“未定义”。这听起来像我的查询是不好的。有任何想法吗? –

+0

如果您查看了我链接到的'QuerySnapshot'文档,您将会看到它没有'exist'属性,所以它总是未定义的。我已经写了一篇简短的文章,可能会澄清一些事情:https://medium.com/@scarygami/cloud-firestore-quicktip-documentsnapshot-vs-querysnapshot-70aef6d57ab3 – Scarygami

+0

这工作!我把你的中篇文章upvoted,这很清楚。 –