在Cloud Functions中向Cloud Firestore的Map类型写入JSON的语法是什么
Cloud Firestore Map类型字段写入方案
针对你提到的customerNote字符串Map结构,分两种常用场景给出对应代码:
场景1:一次性写入/覆盖整个Map结构
如果需要同时写入customerNote下的所有子字段,直接在set方法内嵌套Map结构即可:
await admin.firestore().collection("orders").doc().set({ // 原有简单字段保留原有写法 orderNameInFirestore: data.orderNamefromJSON, // 嵌套结构写入Map字段 customerNote: { customerNote1: data.customerNote1FromWebhook, customerNote2: data.customerNote2FromWebhook, customerNote3: data.customerNote3FromWebhook } })
如果Webhook返回的payload中已经有结构完全匹配的Map对象,可以直接赋值:
// 假设data.webhookCustomerNote是已经包含customerNote1/2/3的结构 await admin.firestore().collection("orders").doc().set({ orderNameInFirestore: data.orderNamefromJSON, customerNote: data.webhookCustomerNote })
场景2:仅更新Map内的个别字段(不覆盖已有内容)
如果不需要修改整个Map,只想更新其中某几个子字段,使用点路径写法指定子字段即可:
使用update方法(推荐)
// 仅更新customerNote1的取值,customerNote2、customerNote3的原有值保持不变 await admin.firestore().collection("orders").doc("目标文档ID").update({ "customerNote.customerNote1": data.newCustomerNote1 })
使用set方法实现相同效果
需要额外添加{merge: true}参数避免覆盖整个文档/Map:
await admin.firestore().collection("orders").doc("目标文档ID").set({ "customerNote.customerNote1": data.newCustomerNote1 }, { merge: true })
内容的提问来源于stack exchange,提问作者Stephen Stilwell
相关产品推荐
相关产品推荐

