Я пытаюсь использовать функцию arrayUnion в Firestore для добавления элементов в массив.У меня есть веб-приложение, и код ниже работает нормально, и элементы добавляются в MyArray:
firebase.firestore().collection("MyCollection").doc("MyDocument").update({
MyArray: firebase.firestore.FieldValue.arrayUnion({element1: "qqq", element2: "www"})
});
Но когда я пытаюсь заставить его работать в облачной функции, код ничего не делает.Ничего не написано в моем массиве Firestore, и нет ошибок в журналах облачных функций.
Инициализация:
const admin = require('firebase-admin');
admin.initializeApp();
Моя облачная функция имеет триггер HTTP, который работает нормально.Код в облачной функции:
admin.firestore().collection("MyCollection").doc("MyDocument").update({
MyArray: admin.firestore.FieldValue.arrayUnion({element1: "qqq", element2: "www"})
});
Тот же код с добавленным простым элементом, в той же облачной функции, запускаемой по HTTP, работает нормально:
admin.firestore().collection("MyCollection").doc("MyDocument").update({
element1: "qqq"
});
Кажется, что admin.firestore.FieldValue.arrayUnion ничего не делает.
Полная облачная функция развернута нормально:
exports.test = functions.https.onRequest((req, res) => {
admin.firestore().collection("MyCollection").doc("MyDocument").update({
MyArray: admin.firestore.FieldValue.arrayUnion({element1: "qqq", element2: "www"})
});
res.status(200).end();
});
Это мой файл package.json, все пакеты обновлены:
{
"name": "functions",
"description": "Cloud Functions for Firebase",
"scripts": {
"serve": "firebase serve --only functions",
"shell": "firebase experimental:functions:shell",
"start": "npm run shell",
"deploy": "firebase deploy --only functions",
"logs": "firebase functions:log"
},
"dependencies": {
"@google-cloud/storage": "^1.7.0",
"admin": "^1.4.0",
"firebase": "^5.5.9",
"firebase-admin": "^6.2.0",
"firebase-functions": "^2.1.0",
"firestore": "^1.1.6",
},
"private": true
}
Я что-то упустил?Большое спасибо!