Kum*_*mar 11 firebase firebase-console google-cloud-firestore
当我添加一个包含我自己的文档ID(不是自动生成)的文档时,文档Id节点以斜体显示,如Firestore控制台的屏幕截图所示.这背后的原因是什么?
我添加数据的代码是
const billingRef = db
.collection('billing/test/2017/months/11')
.doc();
billingRef
.set({ name: 'ABC' })
.then(_ => {
console.log('saved');
})
.catch(err => {
console.log(err);
});Run Code Online (Sandbox Code Playgroud)
上面的代码成功添加了一个节点,但是以斜体添加节点"test"和"months".
我的查询在firestore中为这些记录产生零结果,代码如下.如何查询计费下的所有节点?
db.collection("billing").get().then(function(querySnapshot) {
console.log(querySnapshot.size) // this is always 0
querySnapshot.forEach(function(doc) {
console.log(doc.id, " => ", doc.data());
});
});Run Code Online (Sandbox Code Playgroud)
小智 11
在上面我的评论之后,您将在Firestore控制台中看到,对于斜体文档,有一个小文本表示“此文档不存在,它将不会出现在查询或快照中”,对于非斜体,它则显示“此文档”没有数据”,因此直觉是当使用没有任何字段的代码创建文档时,文档为“空”(子集合不计算在内)。如果添加和删除了一个字段,则文档只是空的而不是空的。
由于您对帐单下凭证的查询是斜体的(“ null”或不存在),如上面的文本所述,它们将不会出现在查询中。
解决方案是通过Firestore控制台添加文档,因为此处文档被创建为空,或者如果在代码中添加了字段,并且可能会在不需要时再次将其删除,则文档将出现在查询中。
我后来从这个问题的答案中发现问题是为空文档创建一个子集合。这是我的代码,它打开了灰色的文档。
db.collection('temporal')
.doc('documentexample')
.collection("files")
.add({
name: "Lorem"
})
.catch((error) => {
console.error("Error adding file: ", error);
});
Run Code Online (Sandbox Code Playgroud)
在上面的代码中,文档documentexample中没有字段。因此,代码继续创建documentexample(它没有字段),然后在其中创建一个子集合files。根据 firebase 的说法,这只是使第一个文档变灰documentexample。
解决方法是首先创建文档,在其中添加一个字段,然后为其创建一个子集合,等等...对于我的用例,我创建了一个函数,该函数创建文档并在用户访问时向其中添加一个字段第一次注册
| 归档时间: |
|
| 查看次数: |
1567 次 |
| 最近记录: |