Firebase Cloud Firestore 查询找不到我的文档
Firebase Cloud Firestore query not finding my document
这是我的数据图片:
我正在尝试获取该文档。这有效:
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);
});
它returns:
也就是说,如果我知道文档的密钥,我就可以获得该文档。
这行不通:
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);
});
只是 returns No such document!
我的查询有什么问题?
你的两个请求的不同之处在于,在第一种情况下,你正在检索一个文件,它给你一个 DocumentSnapshot
,其中有 exists
属性 和 data()
方法。
在第二种情况下,您执行查询,这会为您提供一个 QuerySnapshot
,必须以不同于 DocumentSnapshot
的方式处理。您得到的不是单个文档,而是 list/collection 个文档。您可以使用 empty
或 size
属性检查是否已检索到数据,然后使用 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);
});
我的项目遇到了同样的问题。首先,您的数据库中必须有一个与 .where('objectid',==, 'object.id') 匹配的对象,然后才能让您的数据循环。像 querysnapshot.docs.forEach((d) => d.data());
这是我的数据图片:
我正在尝试获取该文档。这有效:
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);
});
它returns:
也就是说,如果我知道文档的密钥,我就可以获得该文档。
这行不通:
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);
});
只是 returns No such document!
我的查询有什么问题?
你的两个请求的不同之处在于,在第一种情况下,你正在检索一个文件,它给你一个 DocumentSnapshot
,其中有 exists
属性 和 data()
方法。
在第二种情况下,您执行查询,这会为您提供一个 QuerySnapshot
,必须以不同于 DocumentSnapshot
的方式处理。您得到的不是单个文档,而是 list/collection 个文档。您可以使用 empty
或 size
属性检查是否已检索到数据,然后使用 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);
});
我的项目遇到了同样的问题。首先,您的数据库中必须有一个与 .where('objectid',==, 'object.id') 匹配的对象,然后才能让您的数据循环。像 querysnapshot.docs.forEach((d) => d.data());