You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Cloud Functions向Cloud Firestore写入含数组复杂JSON的语法咨询

问题解决方案

问题根源

你的payload.line_items是数组类型(用[]包裹的结构),数组本身不存在id属性,id是数组内每个对象元素的属性,所以直接写payload.line_items.id无法读取到值。

调整方案

方案1:提取数组第一个元素的id(匹配你当前需求场景)

你给出的示例中line_items数组只有1个元素,直接通过下标[0]取第一个元素的id即可,同时建议加边界校验避免数组为空时抛出异常:

const admin = require('firebase-admin');
admin.initializeApp();

exports.webhook = async (req, res) => {
  const payload = req.body;
  // 先校验line_items是否为数组、是否有值
  const firstLineItem = Array.isArray(payload.line_items) ? payload.line_items[0] : null;
  const idLineItems = firstLineItem ? firstLineItem.id : null;

  await admin.firestore().collection("testCollection1").doc().set({
    line_items: {
      id_line_items: idLineItems,
    },
  });
  return res.status(200).end();
}

方案2:提取所有line_items的id组成数组存储

如果后续line_items可能有多个元素,需要把所有id存为数组,可以用map遍历:

const admin = require('firebase-admin');
admin.initializeApp();

exports.webhook = async (req, res) => {
  const payload = req.body;
  // 提取所有id,数组为空时默认返回空数组
  const allLineItemIds = Array.isArray(payload.line_items) 
    ? payload.line_items.map(item => item.id) 
    : [];

  await admin.firestore().collection("testCollection1").doc().set({
    line_items: {
      id_line_items: allLineItemIds,
    },
  });
  return res.status(200).end();
}

内容的提问来源于stack exchange,提问作者Stephen Stilwell

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 12:54:03