У меня бэкэнд Firebase Node.js, развернутый и работающий локально с использованием> firebase serve (который я использую для предварительной разработки).Я могу добавлять и обновлять документы локально (используя Postman для эмуляции внешнего REST API).То же самое относится и к моему серверу Firebase.Что не работает, так это мои процедуры удаления документов при локальном запуске.Они отлично работают при запуске с версией сервера в Google.(Обратите внимание. Процедуры удаления работали локально, когда я работал с более ранней версией 8.x Node.
Вот мой package.json
{
"name": "functions",
"description": "Cloud Functions for Firebase",
"scripts": {
"lint": "eslint .",
"serve": "firebase serve --only functions",
"shell": "firebase functions:shell",
"start": "npm run shell",
"deploy": "firebase deploy --only functions",
"logs": "firebase functions:log"
},
"engines": {
"node": "10"
},
"dependencies": {
"actions-on-google": "^2.7.0",
"firebase-admin": "^8.0.0",
"firebase-client": "0.1.1",
"firebase-functions": "^3.0.2",
"moment": "^2.24.0",
"request-promise-native": "^1.0.7",
"sprintf-js": "^1.1.2",
"twilio": "^3.32.0"
},
"devDependencies": {
"eslint": "^5.12.0",
"eslint-plugin-promise": "^4.0.1",
"firebase-functions-test": "^0.1.6"
},
"private": true
}
Мой локальный env - Windows 7.Я использую Postman для вызова локальных и обслуживаемых версий, и журналы для обоих одинаковы, без ошибок.
Моя локальная версия Node v10.16.0
Наконец-то вот мой вариант удаленияпроцедуры.
'use strict'
const functions = require('firebase-functions')
var firebaseClient = require('firebase-client')
var moment = require('moment');
const serviceAccount = require("./myconfiguration Info");
const admin = require('firebase-admin');
admin.initializeApp({
credential: admin.credential.cert(serviceAccount),
databaseURL: "my db url"
});
var db = admin.firestore()
db.settings({ timestampsInSnapshots: true })
var sessionRef = db.collection('Sessions')
exports.clearSessions = async function(){
const response = await sessionRef.get().then(snapshot=>{
snapshot.forEach((doc=>{
if (doc.exists){
doc.ref.delete()
}
}))
return true
}).catch(err=>{
console.error(err)
console.log('return false')
return false
})
console.log(response)
return response
}