【问题标题】:How to get the last item added to firebase cloud functions realtime database如何将最后一项添加到firebase云功能实时数据库
【发布时间】:2019-07-01 06:24:58
【问题描述】:

我有一个简单的实时 firebase 数据库,结构如下

通知:

  • 100000
    • info: "这是我的 info0"
  • 100001
    • info: "这是我的 info1"
  • 100002
    • info: "这是我的 info2"

我需要阅读最后一个孩子的信息,并在 index.js 中有这个功能

const functions = require('firebase-functions');
const admin = require('firebase-admin');
admin.initializeApp(functions.config().firebase);

exports.helloWorld = 
functions.database.ref('/notification').onWrite((snapshot, context) => {
   const myData = context.info;
  console.log('data: '+myData);
});

但是控制台日志给我一个错误:

你好世界 函数返回未定义、预期的 Promise 或值

我希望能进入控制台:data: this is my info2

我的代码有什么问题?

谢谢!

更新:

读取我需要更改的最后一个值

const myData = context.info;

到:

const myData = snapshot.after.val();

【问题讨论】:

    标签: firebase-realtime-database firebase-cloud-messaging google-cloud-functions


    【解决方案1】:

    你需要在触发函数中返回一些东西。 null 是可以接受的。如果您想在每次创建时都获得最后一个孩子,请使用onCreate 而不是onWrite。医生说:

    onCreate(),在实时数据库中创建新数据时触发。

    您可能想查看此示例:example

    【讨论】:

    • 我仍然得到同样的错误。(我正在触发在数据库中写入新数据的函数,不为空)晚上 11:05:47.409 helloWorld 数据未定义 晚上 11:05:47.413 helloWorld 函数返回未定义、预期的 Promise 或值 晚上 11:05:47.601 helloWorld 函数执行耗时 293 毫秒,状态为:'ok'
    • @ALEXANDERLOZANO 您对 Cloud Function 代码做了哪些具体更改?你能用新代码更新你的问题吗?
    【解决方案2】:

    我需要改变:

    const myData = context.info;

    到:

    const myData = snapshot.after.val();

    然后我得到最后一个项目的值。

    【讨论】:

    • 小心onWrite
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-08-22
    • 1970-01-01
    • 2019-09-20
    • 2018-12-29
    • 1970-01-01
    • 1970-01-01
    • 2020-05-15
    相关资源
    最近更新 更多