【发布时间】:2018-04-12 09:18:55
【问题描述】:
我正在尝试在“发票”集合中创建一个新文档,该文档本身可以正常工作,同时我还尝试在此新文档中添加一个“项目”子集合,它本身也可以正常工作。
但是,当我尝试同时执行这两项操作时,只有项目集合出现在 firestore 控制台的新文档中,考虑到我可以在“查看发票”中访问文档的详细信息,这更加奇怪应用程序的组件,它不显示项目。
我试图通过获取将要创建的新文档的引用来做到这一点,然后参考生成的新文档 ID/引用来设置这个新的子集合,这似乎可行,但又一次,同时尝试两者不会用主数据和子集合填充文档。
我还尝试将添加子集合的方法放在初始文档创建的 then() 方法中,以解决导致此问题的潜在异步问题,但这产生了相同的结果,只是添加了子集合.
组件:
save() {
let _this = this;
let invoiceSubtotal = 0;
let invoiceTax = 0;
let invoiceTotal = 0;
for (let item of this.items) {
invoiceSubtotal += item.subtotal;
invoiceTax += item.tax;
invoiceTotal += item.total;
}
this.invoice = {
id: null,
invoiceId: 999,
reference: this.newInvoiceForm.get('reference').value,
date: new Date(this.newInvoiceForm.get('date').value),
contact: this.selectedContact,
description: this.newInvoiceForm.get('reference').value,
subtotal: +invoiceSubtotal,
tax: +invoiceTax,
total: +invoiceTotal,
paid: false
}
this.db.collection('/users').doc(this.userId).collection('/invoices').add(this.invoice)
.then(function(docRef) {
_this.notifService.showNotification('New invoice created', null);
})
.catch(function(error) {
_this.notifService.showNotification('Error creating invoice: ' + error.message, null);
})
let ref = _this.db.collection('/users').doc(_this.userId).collection('/invoices').ref.doc().id;
console.log('ref: ' + ref);
for (let item of _this.items) {
_this.db.collection('/users').doc(_this.userId).collection('/invoices').doc(ref).collection('/items').add(item)
.then(function(docRef) {
console.log('document added to items collection: ', item);
})
.catch(function(error) {
console.error('Error adding document to items collection: ' + error.message);
})
}
}
【问题讨论】:
标签: angular typescript firebase asynchronous google-cloud-firestore