Node.js firebase函数中的非规范化-创建时从其他文档复制数据
我正试图找出如何在firebase中为订单文档创建合并/非规范化文档,如firebase视频“云函数的五种用途”中所述() 用户创建基本文档,函数从其他几个文档中提取数据以创建所需的结果 下面是我想完成的一个基本示例Node.js firebase函数中的非规范化-创建时从其他文档复制数据,node.js,firebase,google-cloud-firestore,google-cloud-functions,Node.js,Firebase,Google Cloud Firestore,Google Cloud Functions,我正试图找出如何在firebase中为订单文档创建合并/非规范化文档,如firebase视频“云函数的五种用途”中所述() 用户创建基本文档,函数从其他几个文档中提取数据以创建所需的结果 下面是我想完成的一个基本示例 exports.orderCreate = functions.firestore .document('orders/{docId}').onCreate((snap, context) => { const id = context.params.docId;
exports.orderCreate = functions.firestore
.document('orders/{docId}').onCreate((snap, context) => {
const id = context.params.docId;
const orderDoc = snap.data();
const branchId = orderDoc.branchId;
const branchDoc = admin.firestore().collection('branches').doc(branchId);
const bn = branchDoc.brandName;
const ln = branchDoc.locationName;
const logo = branchDoc.imageURL;
return admin.firestore().collection('orders')
.doc(id).set({
branchBrandName: bn,
branchLocationName: ln,
branchLogo: logo
}, { merge: true });
});
我用哪种方式挥手才能让这一切顺利进行?谢谢 使用admin.firestore().collection('branchs').doc(branchId)代码>您实际上声明了一个。然后,为了获得文档字段的值,需要调用异步方法
因此,以下几点应该可以做到:
exports.orderCreate = functions.firestore
.document('orders/{docId}').onCreate((snap, context) => {
const id = context.params.docId;
const orderDoc = snap.data();
const branchId = orderDoc.branchId;
const branchDoc = admin.firestore().collection('branches').doc(branchId);
return branchDoc.get()
.then(branchDocSnapshot => {
const bn = branchDocSnapshot.data().brandName;
const ln = branchDocSnapshot.data().locationName;
const logo = branchDocSnapshot.data().imageURL;
return admin.firestore().collection('orders')
.doc(id).set({
branchBrandName: bn,
branchLocationName: ln,
branchLogo: logo
}, { merge: true });
});
});
您可能需要处理文档不存在的情况,具体取决于您的数据模型和应用程序功能。请参阅文档。感谢您的详细回答。谢谢你的帮助!请注意,将来需要获取DocumentSnapshot的data(),例如const bn=branchDocSnapshot.data()。brandName@BillyParadise是的,你是对的,我错了!:-)请注意,您还可以执行const bn=branchDocSnapshot.get(“brandName”)
。