Firebase Firestore устанавливает массив объектов для документа - PullRequest
0 голосов
/ 01 октября 2019

Мне нужно установить массив для объектов в 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 })

нужна эта структура, поскольку пользователь может продолжать добавлять дополнительные данные:

enter image description here enter image description here это выглядит так, когда я загружаю объект.

enter image description here

1 Ответ

0 голосов
/ 01 октября 2019

Ваше 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 = [
           {
            .....
           }
       ]

ОБНОВЛЕНИЕ после вашего комментария:

Если вы хотите сохранить его точно так, как вы видите в своемОбновленный вопрос, сделайте следующим образом. Однако я не уверен, что это лучший способ сохранить ваши данные: фактически вы создаете не массив, а несколько полей типа «карта» со следующими именами: 0, 1 и т. Д.

Один из главных (отрицательных) побочных эффектов заключается в том, что вам нужно знать все имена полей заранее, чтобы их можно было прочитать, в то время как с «подлинным» полем Array вы можете зацикливать его значения.

  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'
    }
  };
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...