首页 > 解决方案 > 数组值未添加到 Firestore

问题描述

我有一段代码将提交作为新文档添加到 Firestore 中的提交集合中,此提交包含多个字段。环境是 JavaScript React Native。

但是,我正在处理一种奇怪的行为:

const parent = db.collection('submissions').doc();

console.log(submission.facilities);
// output: ["CHANGING_FACILITIES"] // it's an array

batch.set(parent, {
  ...submission,
  facilitiess: submission.facilities
});

batch.commit();

由于某种原因,名为“设施”的字段总是作为空数组推送。当我将该字段重命名为“facilitiess”(添加了一个额外的 s 只是为了调试)时,它被正确添加(见下图),即使值相同。

有人可以解释一下吗?是否保留了“设施”一词,或者这可能是一个错误?

在此处输入图像描述

更新:我实现了一个云功能作为解决方法,它也失败了。

exports.fixArrayBug = functions.firestore
  .document('submissions/{id}')
  .onCreate(async (snap, context) => {
    try {
      await admin
        .firestore()
        .collection('submissions')
        .doc(context.params.id)
        .update({
          facilities: snap.data().facilitiess,
          facilitiess: admin.firestore.FieldValue.delete()
        });
    } catch (err) {
      console.error(err.message);
    }
  });

标签: javascriptfirebasegoogle-cloud-firestore

解决方案


推荐阅读