【发布时间】:2021-11-27 18:36:28
【问题描述】:
我有一个向我的云函数 URL 提供 JSON 有效负载的 webhook。 Cloud Function 将获取 JSON,并将其写入 Cloud Firestore。
我不知道如何处理复杂 JSON 有括号 [] 的这种情况。
我的猜测是,对于这种复杂的 JSON 有括号的情况,我必须添加一些附加语法。
此外,对于我的云 Firestore 中的架构,我正在尝试从 line_items 中获取 id,并将其写入名为“line_items”的 Map 数据类型,其中包含一个名为 id_line_items 的字段。
index.js
const admin = require('firebase-admin');
admin.initializeApp();
exports.webhook = async (req, res) => {
const payload = req.body;
await admin.firestore().collection("testCollection1").doc().set({
line_items: {
id_line_items: payload.line_items.id,
},
});
return res.status(200).end();
}
Json 有效负载
"line_items": [
{
"id": 97,
}
],
当 JSON 有效负载如下所示时,我没有遇到任何错误:请注意此有效负载没有方括号 []
"billing": {
"id": "97",
},
【问题讨论】:
-
为什么要收费?这个物体是从哪里来的?
-
具有
"billing":的 JSON 有效负载是我没有问题的有效负载。这是一个 json 有效负载的示例,可以完美地写入云 Firestore。我怀疑,这是因为它没有括号[]。"line_items":有效载荷有括号 [],我相信这可能需要额外的语法,这可能会导致错误。 -
你有错误痕迹吗?
-
这些方括号表示一个数组(多个对象),因此如果您不指定哪一个,您将无法访问该行项目的
id。您可能想要存储所有订单项。我建议你复习一下 javascript 对象和数组,然后再了解 firestore 文档和集合与它们的相似之处。 -
谷歌云平台在日志中没有给我任何错误。所以我需要学习如何在我的 json 有效负载中识别一个数组,并弄清楚如何将该数组写入云 Firestore。谢谢。所以对于我的例子,我可能需要指定
payload.line_items[0].id或类似的东西。
标签: node.js json firebase express google-cloud-functions