当我添加一个具有我自己的文档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);
});
上面的代码成功地添加了一个节点,但添加了斜体的节点“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());
});
});
根据我上面的评论,您将在Firestore控制台中看到,对于斜体的文档,有一个小文本说“此文档不存在,它不会出现在查询或快照中”,因为非斜体的,它说“此文档没有数据”,因此直觉是,当文档在没有任何字段的代码中创建时,它是“null”(子集合不计算在内)。如果添加和删除了一个字段,那么文档就是空的,而不是空的
由于您对账单项下单据的查询是斜体的(“null”或不存在),如上所述,它们不会出现在查询中
解决方案可能是通过Firestore控制台添加文档,因为此处的文档创建为空,或者如果在代码中,添加一个字段,如果不需要,可以再次删除该字段,然后文档将显示在查询中
问题是,我后来从这个问题的answer中发现,对我来说,创建一个子集合到一个空文档。这是我的代码,用于显示灰显文档
在上面的代码中,doc
documentexample
没有字段。因此,代码继续创建documentexample
(它没有字段),然后在其中创建一个子集合files
。根据firebase的说法,这只是使第一个文档documentexample
变灰解决方法是首先创建文档并在其中添加一个字段,然后创建一个子集合,然后继续。。。对于我的用例,我创建了一个函数来创建文档,并在用户第一次注册时向文档中添加一个字段
相关问题 更多 >
编程相关推荐