Значения массива не добавляются в Firestore - PullRequest
0 голосов
/ 30 апреля 2018

У меня есть фрагмент кода, который добавляет отправку в качестве нового документа в коллекцию отправлений в 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();

По какой-то причине поле с именем «средства» всегда помещается в пустой массив. Когда я переименовал поле в «средства» (добавил дополнительные s только для отладки), оно было добавлено правильно (см. Изображение ниже), даже если значение идентично.

Может кто-нибудь объяснить это? Слово "услуги" зарезервировано или это ошибка?

enter image description here

Обновление: Я реализовал облачную функцию в качестве обходного пути, она также не работает.

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