Firebase firestore 设置要记录的对象数组

Firebase firestore set array of objects to document

我需要为要 firestore 的对象设置一个数组,但只存储了 url 的第一个索引。任何正确方向的帮助都会有所帮助,谢谢。

代码:

    const object = [
           {
            user: 'mike',
            userName: 'Mike nick',
            Urls:[
              {comment: "BBBBB", imageUrl: "url1"},
              {comment: "BBBJvuyiu", imageUrl: "url2"},
              {comment: "AAAAA", imageUrl: "url3"},
            ],
            date: 'March 20th'
           }
       ]


     firestoreRef
        .collection('users')
        .doc(userId)
        .collection('images')
        .doc('customers')
        .collection('customerExperience')
        .doc(userId)
        .set(object, { merge: true })

需要此结构,因为用户可能会继续添加更多数据:

上传对象时是这样的

你的 const object 实际上是一个数组,而它应该是一个对象(不是数组)。

以下应该有效:

  const object = {
    user: 'mike',
    userName: 'Mike nick',
    urls: [
      { comment: 'BBBBB', imageUrl: 'url1' },
      { comment: 'BBBJvuyiu', imageUrl: 'url2' },
      { comment: 'AAAAA', imageUrl: 'url3' }
    ],
    date: 'March 20th'
  }; 

注意与你的对象的区别:

const object = [
           {
            .....
           }
       ]

更新您的评论:

如果您想完全按照您在更新后的问题中显示的方式保存它,请执行以下操作。但是,我不确定这是保存数据的最佳方式:事实上,您不是在创建数组,而是创建了几个 "map" 类型的字段,名称如下:0、1 等

一个主要(负面)副作用是您需要预先知道所有字段名称才能阅读它们,而使用 "genuine" 数组字段,您可以循环遍历其值。

  const object = {
    0: {
      user: 'mike1',
      userName: 'Mike nick',
      urls: [
        { comment: 'BBBBB', imageUrl: 'url1' },
        { comment: 'BBBJvuyiu', imageUrl: 'url2' },
        { comment: 'AAAAA', imageUrl: 'url3' }
      ],
      date: 'March 20th'
    },
    1: {
      user: 'mike2',
      userName: 'Mike nick',
      urls: [
        { comment: 'BBBBB', imageUrl: 'url1' },
        { comment: 'BBBJvuyiu', imageUrl: 'url2' },
        { comment: 'AAAAA', imageUrl: 'url3' }
      ],
      date: 'March 20th'
    }
  };

来自 Official Documentation,这里是不同数据类型的示例代码:

let data = {
  stringExample: 'Hello, World!',
  booleanExample: true,
  numberExample: 3.14159265,
  dateExample: admin.firestore.Timestamp.fromDate(new Date('December 10, 1815')),
  arrayExample: [5, true, 'hello'],
  nullExample: null,
  objectExample: {
    a: 5,
    b: true
  }
};

您将需要以下内容来创建包含对象数组的对象

let object = {
  user: 'mike',
  userName: 'Mike nick',
  urls: {
    [{comment: 'BBBBB', imageUrl: 'url1'},
    {comment: 'BBBJvuyiu', imageUrl: 'url2'},
    {comment: 'AAAAA', imageUrl: 'url3'}]
    },
  date: 'March 20th'
}; 

让我知道这是否适合你。