Javascript 如何从Firebase数据库检索单个JSON值?

Javascript 如何从Firebase数据库检索单个JSON值?,javascript,node.js,firebase,firebase-realtime-database,google-cloud-functions,Javascript,Node.js,Firebase,Firebase Realtime Database,Google Cloud Functions,假设我有一个firebase节点,它是dbref=firebase.ref'/Transfer_Request/{pushID]/' 客户端写入两个值:from_ID和to_ID到dbref。如何从Firebase云函数中获取from_ID和to_ID的各个值 我的代码: exports.TransferTicket = functions.database.ref('/Transfer_Request/{pushID}').onWrite((event) => { const or

假设我有一个firebase节点,它是dbref=firebase.ref'/Transfer_Request/{pushID]/'

客户端写入两个值:from_ID和to_ID到dbref。如何从Firebase云函数中获取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");

});
我有两个错误:

一,

TypeError:admin.database…设置不是当前的函数 exports.TransferTicket.functions.database.ref.onWrite /user_code/index.js:41:25 at对象。 /user_code/node_modules/firebase functions/lib/cloud functions.js:59:27 在下一个本地在 /user_code/node_modules/firebase functions/lib/cloud functions.js:28:71 在等待者 /user\u code/node\u modules/firebase functions/lib/cloud functions.js:24:12 云端功能 /user_code/node_modules/firebase functions/lib/cloud functions.js:53:36 at/var/tmp/worker/worker.js:716:24 at process.\u tickDomainCallback 内部/流程/下一步勾选js:135:7

二,

TypeError:无法在处读取null的属性“from” exports.TransferTicket.functions.database.ref.onWrite /user_code/index.js:35:25 at对象。 /user_code/node_modules/firebase functions/lib/cloud functions.js:59:27 在下一个本地在 /user_code/node_modules/firebase functions/lib/cloud functions.js:28:71 在等待者 /user\u code/node\u modules/firebase functions/lib/cloud functions.js:24:12 云端功能 /user_code/node_modules/firebase functions/lib/cloud functions.js:53:36 at/var/tmp/worker/worker.js:716:24 at process.\u tickDomainCallback 内部/流程/下一步勾选js:135:7


第一个问题来自这样一个事实:当执行以下操作时,您会错过Firebase引用

你应该做:

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);
        //...
    });

});

非常感谢!我正在.ref'/Transfer\u Request/{pushID]/'处输入值作为{from\u ID:afd@gm.com,收件人:afds1@gm.com}.现在,我如何在我的程序中将'from_ID'和'to_ID'的值分配给不同的变量?因为它说'change.after.val'为空。这可能是因为它不是一个值而是一个正在编写的json对象吗?您的javascript对象似乎是正确的。当您从Firebase控制台查看数据库时,您看到了正确的值吗对于from_ID和to_ID?你能在你的帖子中添加你的数据库的摘录吗?按照你的要求上传!我唯一觉得奇怪的是,在你的打印屏幕上,你错过了文章结尾的双引号ar@gm.com和sd@gm.com.剩下的应该可以了。我已经用一些控制台日志更新了我的答案。你在函数日志?我还使用set方法的catch更新代码,以便处理可能的承诺拒绝。
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);
        //...
    });

});