如何从Firebase数据库获取值并将其分配给Firebase云端函数中的值?
所以我使用firebase作为一个演示应用程序的后端,我喜欢这个堆栈,但我挂在一个问题上,我无法弄清楚如何从数据库中检索值(我已经有钥匙就好)。
简而言之,我正在从一个设备发送信息,其中包含正在尝试访问的其他设备的“友好名称”。 function代码如下所示:
exports.connectMe = functions.https.onRequest((req, res) => { cors(req, res, () => { admin.database().ref('calls/' + req.body.id + '/').set({ target: req.body.target, caller: req.body.caller, time: req.body.time }); const target = req.body.target; console.log(`target: ${target}`); const targetCall = admin.database().ref(`tokens/${target}/token`); console.log(targetCall); // const targetValue = targetCall.val(); res.status(200).send("Thanks For The Call!"); }); });
variables,targetCall正确地指向我想要达到的数据库条目,但我无法提取我的生活价值。 位于admin.database.ref
的令牌需要放在一个http请求中。 我如何获得价值? 注释掉的代码显示了我想要存储的variables,但是我知道.val()不是一个引用方法。
为了logging, admin
被设置为require('firebase-admin');
在代码之前。
你非常接近数据库查询的工作。
查看Firebase文档 。 它解释了如何访问结构化数据。
exports.connectMe = functions.https.onRequest((req, res) => { cors(req, res, () => { const callRef = admin.database().ref('calls/' + req.body.id + '/').set({ target: req.body.target, caller: req.body.caller, time: req.body.time }); const target = req.body.target; console.log(`target: ${target}`); const takenRef = admin.database().ref(`tokens/${target}/token`) .once('value'); Promise.all([callRef, takenRef]) .then(results => { const snapshot = results[1]; // Promise of `takenRef` console.log(snapshot.val()); // This is the data from the database... res.status(200).send("Thanks For The Call!"); }); }); });
查看更新的代码,我添加了.once('value').then(snapshot
到您的查询,让您访问数据。
您需要调用函数once()
,如文档中所示 :
targetCall.once("value", function(data) { const targetValue = data.val(); res.status(200).send("Thanks For The Call!"); });
- 我发送推送通知时,用户注册,它只发送通知给注册用户,我可以改变,每个人都使用该应用程序?
- Firebase .on('value')代码块不在内部执行云function。 任何build议要解决?
- 在NodeJS应用程序中提交firebase文件的做法是什么?
- Admin SDK Auth错误,错误的错误代码
- Javascript:将对象的对象转换为对象数组
- 如何使用Cloud Functions for Firebase向特定用户发送推送通知
- Firebase倒数计时器跨多个客户端同步
- Firebasefunction可以在使用NodeJS从数据库中删除对象时从存储中删除文件
- Firebase云端函数:“错误:无法处理请求”