我正在使用Android应用程序,并使用firebase作为它的后端。我试图让通知系统工作,依赖于监听数据库中的更改。虽然有问题,因为我收到以下错误。想知道是否有人可以提供帮助,可以提供任何额外的代码。
Firebase功能
'use-strict'
const functions = require('firebase-functions');
const admin = require('firebase-admin');
admin.initializeApp(functions.config().firebase);
exports.sendNotification = functions.database.ref("Notifications/{user_id}/{notification_id}").onWrite((data, context)=>{
const user_id = context.params.user_id;
const notification_id = context.params.notification_id;
console.log("User ID : " + user_id + " | Notification ID : " + notification_id);
return admin.database().ref("Notifications/" + user_id + "/" + notification_id).get().then(queryResult => {
const job_id = queryResult.data().Job;
const from_data = admin.database().ref("Jobs/" + job_id).get();
const to_data = admin.database().ref("Users/" + user_id).get();
return Promise.all([from_data, to_data]).then(result => {
const job_name = result[0].data().advertName;
const to_name = result[1].data().fullName;
console.log("JOB : " + job_name + " | TO : " + to_name);
return undefined;
});
});
});
功能错误
答案 0 :(得分:2)
It looks like you're mixing up the Realtime Database and Firestore APIs. Firebase Realtime Database APIs doens't provide a get() method to fetch data. For that, you use once() on a Reference object.
答案 1 :(得分:1)
错误非常明确:Firebase实时数据库中没有get
功能。
您似乎正在尝试使用在admin.firestore()
下可用的Cloud Firestore。如下所示:
const from_data = admin.firestore().doc("Jobs/" + job_id).get();
const to_data = admin.firestore().doc("Users/" + user_id).get();
有关完整示例,请参阅Getting started和其他Firestore文档中的 NODE.JS 标签。