运行此Firestore云功能时,出现“ ReferenceError:firebase未定义”。我认为问题可能出在where子句上,但由于它已出现在VSCode的IntelliSense上,因此看起来似乎已定义。
const functions = require("firebase-functions");
const admin = require("firebase-admin");
var fetch = require("node-fetch");
admin.initializeApp();
const db = admin.firestore();
exports.sendPushNotifications = functions.firestore
.document("/messages/{chatId}/chats/{messageId}")
.onCreate(event => {
let message = "";
const members = event.get("members");
const text = event.get("text");
// const sender = event.get('user._id')
return db
.collection("users")
.where(firebase.firestore.FieldPath.documentId(), "==", members[1])
.get()
.then(users => {
users.docs.forEach(user => {
var expoToken = user.data().notificationToken;
if (expoToken) {
message = {
to: expoToken,
body: text
};
}
});
return Promise.all(message);
})
.then(message => {
return fetch("https://exp.host/--/api/v2/push/send", {
method: "POST",
headers: {
host: "exp.host",
accept: "application/json",
"accept-encoding": "gzip, deflate",
"content-type": "application/json"
},
body: JSON.stringify(message)
});
});
});
答案 0 :(得分:2)
更改此:
.where(firebase.firestore.FieldPath.documentId(), "==", members[1])
对此:
.where(admin.firestore.FieldPath.documentId(), "==", members[1])
作为参考,请检查以下内容:
https://firebase.google.com/docs/reference/admin/node/admin.firestore