Firebase firestore有没有一种方法可以将数据从数组写入文档,然后再写入子集合



我是firebase的新手,正在尝试将数组的一部分写入文档,并将其剩余数据写入子集合中的文档。以下是我所做的:

let db = admin.firestore();    
db.collection("User")
.doc(fields.user)
.collection("Address")
.doc(fields.address)
.set({
User: fields.user,
Address: fields.address,
})
.then(
db.collection("User")
.doc(fields.user)
.collection("Address")
.doc(fields.address)
.collection("Orders")
.doc(fields.ID)
.set({
ID: fields.ID,
});

我最大的问题是,是否有更好的方法可以做到这一点?这是一个小样本,但对于某些情况,它可能会很长。提前感谢您的帮助。

我通常更喜欢使用字符串插值构建更长的路径,这将导致:

db.doc(`User/${fields.user}/Address/${fields.address}`)
.set({
User: fields.user,
Address: fields.address,
})
.then(
db.doc(`User/${fields.user}/Address/${fields.address}/Orders/${fields.ID}`)
.set({
ID: fields.ID,
});

除此之外,您可能希望在批处理写入中执行此操作,以便两个写入都成功,或者两个都不成功。

如果您第一次拥有所有数据。您可以使用子集合创建对象,然后在一个请求中设置它

var obj = {
User: fields.user,
Address: fields.address,
Orders: {
ID: fields.ID,
}
}
db.collection("User").doc(fields.user).set(obj)
.then(() => {
console.log("Document successfully written!");
})
.catch((error) => {
console.error("Error writing document: ", error);
});

最新更新