Cloud Function写入Cloud Firestore的Map类型失败如何解决
实现方法
Firestore 是无 Schema 的文档型数据库,不需要提前声明任何字段的类型,写入时 JavaScript 普通对象会被自动转换为 Firestore 的 Map 类型,你只需要调整写入时的字段结构即可。
你当前的代码是将email、first_name、last_name作为文档的顶级字段写入,因此不会生成嵌套的 Map 结构。如果需要写入 Map 类型字段,直接将对应字段的值设置为嵌套的 JS 对象即可。
修改后的代码示例
const admin = require('firebase-admin') admin.initializeApp(); exports.wooCommerceWebhook = async (req, res) => { // 增加基础参数校验,避免空值触发报错 if (!req.body || !req.body.billing) { return res.status(400).send('无效请求参数').end(); } const payload = req.body; // 写入Firestore - People集合 await admin.firestore().collection("people").doc().set({ // people_Billing 为Map类型字段,直接赋值为payload中的billing对象即可 people_Billing: payload.billing, // 如果需要自定义Map内的字段名,可手动构造对象: // people_Contact: { // homeEmail: payload.billing.email, // firstName: payload.billing.first_name, // lastName: payload.billing.last_name // } }); return res.status(200).end(); };
补充说明
你代码中提前声明的billing、people_EmailHome等变量未实际使用,不需要额外声明,也不需要提前定义复杂JSON的每一层嵌套结构,直接从req.body中读取对应属性即可。
内容的提问来源于stack exchange,提问作者Stephen Stilwell
相关产品推荐
相关产品推荐

