У меня есть фрагмент кода, который добавляет отправку в качестве нового документа в коллекцию отправлений в 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 только для отладки), оно было добавлено правильно (см. Изображение ниже), даже если значение идентично.
Может кто-нибудь объяснить это? Слово "услуги" зарезервировано или это ошибка?
Обновление: Я реализовал облачную функцию в качестве обходного пути, она также не работает.
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);
}
});