Следующая строка в вашем коде неверна:
return admin.firestore().ref('/messages').push({original: original}).then()
Вы «перепутываете» базу данных реального времени и Firestore, которые следует запрашивать (т.е. записывать, читать, удалять) по-разному, так как их данные-модели различаются, см. https://firebase.google.com/docs/firestore/rtdb-vs-firestore. В частности, хотя «база данных реального времени и облачное хранилище пожаров являются базами данных NoSQL», первая «хранит данные в виде одного большого дерева JSON», а вторая «хранит данные в документах, организованных вколлекции ".
На самом деле исходный код из справочного элемента" Начало работы ", на который вы ссылаетесь, нацелен на базу данных реального времени с помощью admin.database()
return admin.database().ref('/messages').push({original: original}).then()
замены,в этой строке кода database()
от firestore()
не будет работать.
Вам следует взглянуть на документацию Firestore, здесь , здесь и здесь например, чтобы узнать, как писать в Firestore.
Например, вы можете изменить свою облачную функцию следующим образом:
exports.addMessage = functions.https.onRequest((req, res) => {
// Grab the text parameter.
const original = req.query.text;
admin.firestore().collection("mydocs").doc("firstdoc").set({original: original})
.then(() => {
console.log("Document successfully written!");
res.send({original: original}); //Just an example, as there is not that much interest to send back the value of original...
})
.catch(error => {
console.error("Error writing document: ", error);
res.status(500).send(error);
});
})
Наконец, я бы предложил вам посмотретьследующий чиновникВидеоролик «Изучение функций облака для Firebase» ( здесь ), и, в частности, три видеоролика под названием «Изучите обещания JavaScript».В частности, вы заметите, что для запускаемых по HTTP функций вы просто должны отправить ответ , без использования return
.