Firebase功能:仅限未定义

时间:2018-05-27 19:31:56

标签: node.js firebase google-cloud-functions

所以,我的问题是,在我的firebase函数中,我似乎无法获得console.log的任何内容。

functions/index.js我有:

const functions = require("firebase-functions");
const admin = require("firebase-admin");

try { 
  admin.initializeApp(functions.config().firebase);
} catch (e) {
  console.log("dbMessagesUpdate initializeApp failure");
}

exports.onMessagesUpdate = functions.database.ref("/messages/basic_message").onCreate((snap, context) => {
console.log("SNAP: ", snap.val());
});

在终点站:

firebase deploy --only functions
// The function shows up in my functions list. 
// also, it would be nice to just test functions locally, but when I run 
// `firebase serve --only functions` I get An unexpected error occurred...

然后,我将新数据添加到Firebase实时数据库的/messages/basic_message

当我检查我的firebase功能网站仪表板中的日志时,它会显示(i)信息标签,但没有其他内容。

在终端:

firebase functions:log

返回:

2018-05-27T19:14:54.159Z N onMessagesUpdate: undefined

不确定我错过了什么。这个问题是由于没有在Firebase上设置结算信息吗?为什么undefined

2 个答案:

答案 0 :(得分:1)

/messages/basic_messages可能已经存在。

而是检查添加到其中的元素:

var ref = functions.database.ref("/messages/basic_messages");

ref.on("child_added", function(snapshot, prevChildKey) {
  var newMessage = snapshot.val();
  console.log("Author: " + newMessage.author);
  console.log("Previous Post ID: " + prevChildKey);
});

答案 1 :(得分:0)

functions.database.ref("/messages/basic_message").onCreate()仅响应名为/messages/basic_message的新创建节点。如果该节点在更改之前存在,则不会调用该函数。

如果您想知道该节点在创建后是否以任何方式发生了变化,请改用onUpdate()

如果您想知道某个孩子是否在/messages/basic_message下的任何位置创建,请改用:

functions.database.ref("/messages/basic_message/{id}").onCreate(...)