【问题标题】:Syntax for writing complex Json to the Cloud Firestore using Cloud Functions?使用 Cloud Functions 将复杂的 Json 写入 Cloud Firestore 的语法?
【发布时间】: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


【解决方案1】:

有问题的 Json 是一个数组,我需要指定位置。

id_line_items: payload.line_items.id,

需要改成:

id_line_items: payload.line_items[0].id,

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-11-17
    • 2021-11-20
    • 2018-03-23
    • 2021-09-25
    • 1970-01-01
    • 1970-01-01
    • 2021-03-29
    • 2021-11-25
    相关资源
    最近更新 更多