如何从 Firebase 数据库中获取值并将其分配给 Firebase Cloud Functions 中的值?
How to get a value from Firebase Database and assign it to a value in Firebase Cloud Functions?
所以我使用 firebase 作为演示应用程序的后端,我非常喜欢堆栈,但我被一个问题挂断了,我不知道如何从数据库(我有钥匙就好了)。
简而言之,我从一个设备发送信息,其中包含另一个设备的 "friendly-name" ,它试图到达一个 firebase 函数。
函数代码如下所示:
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 正确指向我想要访问的数据库条目,但我无法提取我生命中的值。位于 admin.database.ref
的令牌需要放在 http 请求中。我如何获得价值?注释掉的代码显示了我想要存储它的变量,但我知道 .val() 不是引用方法。
作为记录,admin
设置为 require('firebase-admin');
前面的代码。
您需要调用函数 once()
,如 documentation:
targetCall.once("value", function(data) {
const targetValue = data.val();
res.status(200).send("Thanks For The Call!");
});
您已经非常接近使数据库查询正常工作了。
看看Firebase Documentation。它解释了如何访问结构化数据。
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
添加到您的查询中,以便您访问数据。
所以我使用 firebase 作为演示应用程序的后端,我非常喜欢堆栈,但我被一个问题挂断了,我不知道如何从数据库(我有钥匙就好了)。
简而言之,我从一个设备发送信息,其中包含另一个设备的 "friendly-name" ,它试图到达一个 firebase 函数。
函数代码如下所示:
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 正确指向我想要访问的数据库条目,但我无法提取我生命中的值。位于 admin.database.ref
的令牌需要放在 http 请求中。我如何获得价值?注释掉的代码显示了我想要存储它的变量,但我知道 .val() 不是引用方法。
作为记录,admin
设置为 require('firebase-admin');
前面的代码。
您需要调用函数 once()
,如 documentation:
targetCall.once("value", function(data) {
const targetValue = data.val();
res.status(200).send("Thanks For The Call!");
});
您已经非常接近使数据库查询正常工作了。
看看Firebase Documentation。它解释了如何访问结构化数据。
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
添加到您的查询中,以便您访问数据。