Javascript 如何从Firebase数据库中获取值并将其分配给Firebase云函数中的值?
因此,我使用firebase作为演示应用程序的后端,我非常喜欢这个堆栈,但有一个问题我挂断了电话,我不知道如何从数据库中检索值,我有很好的密钥。 简单地说,我正在从一台设备发送信息,其中包含另一台设备的友好名称,该设备正试图访问firebase函数。 函数代码如下所示:Javascript 如何从Firebase数据库中获取值并将其分配给Firebase云函数中的值?,javascript,node.js,firebase,firebase-realtime-database,google-cloud-functions,Javascript,Node.js,Firebase,Firebase Realtime Database,Google Cloud Functions,因此,我使用firebase作为演示应用程序的后端,我非常喜欢这个堆栈,但有一个问题我挂断了电话,我不知道如何从数据库中检索值,我有很好的密钥。 简单地说,我正在从一台设备发送信息,其中包含另一台设备的友好名称,该设备正试图访问firebase函数。 函数代码如下所示: exports.connectMe = functions.https.onRequest((req, res) => { cors(req, res, () => { admin.database(
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!");
});
});
变量targetCall正确地指向了我想要到达的db条目,但我无法提取我生命中的值。位于admin.database.ref的令牌需要放置在http请求中。我如何获得该值?注释掉的代码显示了我想要存储它的变量,但我知道.val不是引用方法。对于记录,admin设置为需要'firebase-admin';代码前面的部分。您需要调用函数一次,如下所示:
您需要调用函数一次,如下所示:
很快就可以让数据库查询正常工作了 请看下面的图片。它解释了如何访问结构化数据
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!");
});
});
});
查看更新的代码,我添加了。一旦“值”。然后将快照添加到您的查询中,这样您就可以访问数据了。您很快就可以让数据库查询正常工作了 请看下面的图片。它解释了如何访问结构化数据
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!");
});
});
});
查看更新的代码,我已经添加了。一旦“值”。然后将快照添加到您的查询中,这样您就可以访问数据。这使它按照我的要求工作。我不明白这一点。曾经“值”的含义不仅仅是初始化,谢谢你澄清这一点!不要忘记在这里等待两个异步操作!你可能会在比赛状态中结束,并得到不一致的结果。我保证,所有。。。为了胜利,这让我如愿以偿。我不明白这一点。曾经“值”的含义不仅仅是初始化,谢谢你澄清这一点!不要忘记在这里等待两个异步操作!你可能会在比赛状态中结束,并得到不一致的结果。我保证,所有。。。为了胜利。