javascript - 如何从 Firebase 数据库中检索单个 JSON 值?
问题描述
假设我有一个 dbref = firebase.ref('/Transfer_Request/{pushID]/') 的 firebase 节点。
客户端写入两个值;from_ID 和 to_ID 到 dbref。如何从 Firebase Cloud 函数中获取 from_ID 和 to_ID 的各个值?
我的代码:
exports.TransferTicket = functions.database.ref('/Transfer_Request/{pushID}').onWrite((event) => {
const original = event.data.val();
const from_ID = original.from_ID;
const to_email_ID = original.to_ID;
//search for to_email ID
return admin.database().set("A transfer request was just made");
});
我收到两个错误:
1)
TypeError: admin.database(...).set 不是 export 的函数。TransferTicket.functions.database.ref.onWrite (/user_code/index.js:41:25) 的 Object。(/user_code/node_modules/firebase-functions/lib/cloud-functions.js:59:27) 在下一个 (native) 在 /user_code/node_modules/firebase-functions/lib/cloud-functions.js:28:71 在 __awaiter (/user_code/node_modules/firebase-functions/lib/cloud-functions.js:24:12) 在 cloudFunction (/user_code/node_modules/firebase-functions/lib/cloud-functions.js:53:36) 在 /var/ tmp/worker/worker.js:716:24 at process._tickDomainCallback (internal/process/next_tick.js:135:7)
2)
类型错误:无法在 exports.TransferTicket.functions.database.ref.onWrite (/user_code/index.js:35:25) 在 Object 处读取 null 的属性“来自”。(/user_code/node_modules/firebase-functions/lib/cloud-functions.js:59:27) 在下一个 (native) 在 /user_code/node_modules/firebase-functions/lib/cloud-functions.js:28:71 在 __awaiter (/user_code/node_modules/firebase-functions/lib/cloud-functions.js:24:12) 在 cloudFunction (/user_code/node_modules/firebase-functions/lib/cloud-functions.js:53:36) 在 /var/ tmp/worker/worker.js:716:24 at process._tickDomainCallback (internal/process/next_tick.js:135:7)
解决方案
第一个问题来自这样一个事实,即在执行以下操作时您会错过 Firebase Reference
。
return admin.database().set("A transfer request was just made");
你应该做:
admin.database().ref('...the path where you want to write...').set("A transfer request was just made");
第二个问题是自从 Firebase SDK for Cloud Functions 1.0.0 版的新版本发布以来,语法发生了变化。请参阅此文档项。
你应该修改你的代码如下:
exports.TransferTicket = functions.database.ref('/Transfer_Request/{pushID}').onWrite((change, context) => {
const original = change.after.val();
const from_ID = original.from_ID;
console.log(from_ID);
const to_email_ID = original.to_ID;
console.log(to_email_ID);
return admin.database().ref('...path...').set("A transfer request was just made")
.catch(error => {
console.log(error);
//...
});
});
推荐阅读
- ruby-on-rails - CircleCI 2.0 - 退出代码 127,找不到捆绑命令
- bash - 使用 BASH 安装软件
- android - 修改 Android Paging Architecture 库中的 PagedList
- api - CKAN用户使用API登录
- java - 计算素数除以数字的次数
- javascript - XRegexP.matchRecursive - 添加回调功能以允许多个相同的实例
- javascript - 单击时显示缩略图的大图像,但包含多个容器
- java - MongoDB检查连接无异常
- c# - 麦克风输入的最大浮点数为1。如何将其变大并从1更改?统一 C#
- python - 如何检查某些值是否不在 for 循环内的列表中(二进制到十进制程序)