node.js - Cloud Function 无法写入 Cloud Firestore 中的 Map 数据类型
问题描述
我有一个将 JSON 发布到我的云函数触发器 URL 的 Webhook。
我希望 Cloud Function 解析 JSON 并将其写入我的 Cloud Firestore。
我已经在 webhook.site 和 requestbin.com 上测试了 Webhook:他们都完美地接收了 POST 请求。
此外,这不是经过身份验证的请求,我通过 Google Cloud Platform - Cloud Function Console 部署了该功能。我没有通过 CLI 或通过使用 firebase 的应用程序设置来部署它。
此功能确实需要 HTTPS。
我能够让我的函数写入 Firestore,但它没有写入 Map 中的字段 - 我在底部包含了屏幕截图,以显示我的 Firestore 在 Firebase / Google Cloud Platform Console 中的样子。
我需要提供什么语法来确保我的 Cloud Function 采用 JSON 并写入 Firestore,同时尊重 Map 数据类型?
我需要声明 people_Email = map 吗?如果我这样做了,那将如何实现?
index.js
const admin = require('firebase-admin')
admin.initializeApp();
exports.wooCommerceWebhook = async (req, res) => {
const payload = req.body;
var billing = ""; // Do I even need to declare every nest of the complex JSON?
var people_EmailHome = "";
var people_FirstName = "";
var people_LastName = "";
// Write to Firestore - People Collection
await admin.firestore().collection("people").doc().set({
people_EmailHome: payload.billing.email,
people_FirstName: payload.billing.first_name,
people_LastName: payload.billing.last_name,
});
return res.status(200).end();
};
包.json
{
"name": "sample-http",
"version": "0.0.1",
"dependencies": {
"firebase-admin": "^9.4.2"
}
}
我的 Webhook 将 POST JSON 传送到我的 Cloud Function URL:
{
"billing": {
"email": "test@test.com",
"first_name": "First",
"last_name": "Last"
}
}
解决方案
我需要提供什么语法来确保我的 Cloud Function 采用 JSON 并写入 Firestore,同时尊重 Map 数据类型?
以下将解决问题:
const admin = require('firebase-admin')
admin.initializeApp();
exports.wooCommerceWebhook = async (req, res) => {
const payload = req.body;
await admin.firestore().collection("people").doc().set({
people_Email: { people_EmailHome: payload.billing.email },
people_Names: { people_FirstName: payload.billing.first_name, people_LastName: payload.billing.last_name }
});
return res.status(200).end();
};
推荐阅读
- mqtt - 在 Azure IoT 中心 - 我在哪里可以看到从设备发送的 MQTT 消息?
- algorithm - 使数组元素等于或 0 的最小调整次数
- cmake - 未定义所需的目标 protobuf::libprotobuf-lite 或 protobuf::libprotobuf
- django - 如何使用 allauth 和 rest-auth 从 React 前端在 Django 中重新发送确认电子邮件
- javascript - 如何在循环中添加迭代函数以从日期计算持续时间以选择数组对象值?
- regex - 在最里面的大括号中查找以带有给定子字符串的单词开头的文本
- react-native - 在 React Native 的 iPhone 设置上手动禁用后如何检测 PushNotificationIOS 状态?
- c - 3D 网格数据的插值
- amazon-web-services - 云形成定义的lambda和api网关
- r - R:用第二个列表元素的值替换一个列表元素的值