当从 Firebase 管理员(nodejs)推送孩子时,Firebase childAdded 观察者不会被触发

Posted

技术标签:

【中文标题】当从 Firebase 管理员(nodejs)推送孩子时,Firebase childAdded 观察者不会被触发【英文标题】:Firebase childAdded observer not fired when child pushed from firebase admin (nodejs) 【发布时间】:2017-03-29 20:11:57 【问题描述】:

所以我一直在努力让它发挥作用。本质上,我正在构建一个聊天应用程序并依靠 childAdded 观察者来检查新消息。在我的 ios 应用程序中,我使用以下内容:

//Get ref to users chat node
let messagesRef = dbRef.child("chats").child(self.userId)
//Only get most recent message

let messageQuery = messagesRef.queryOrdered(byChild: "messageTimeStamp").queryLimited(toLast: 1)

// Listen for new messages (last 1) being written to the Firebase DB
messageQuery.observe(.childAdded, with:  (snapshot) -> Void in...

当用户将消息添加到 /chat/uid 时,这可以正常工作。但是当我从 firebase admin (node js) 添加一个子节点时,观察者永远不会被解雇。

这就是我从服务器端添加消息的方式:

ref.child('chats/'+ uid).push(message);

消息已正确添加到树中,但从未触发任何观察者。

尽我所能,经过十几次没有产生任何差异的调整后,我确定我错过了一些简单的东西。救命!

【问题讨论】:

【参考方案1】:

在发布问题后解决它......典型!添加 .set 似乎使观察者工作,即使文档声明它是相同的。

这行得通:

ref.child('chats/'+ uid).push().set(message);

【讨论】:

以上是关于当从 Firebase 管理员(nodejs)推送孩子时,Firebase childAdded 观察者不会被触发的主要内容,如果未能解决你的问题,请参考以下文章

使用 NodeJS 的 Firebase 网络推送通知不起作用

CPU 和带宽密集型是不是直接使用 Firebase Cloud Messaging 发送推送通知?

通过NodeJS向Firebase Cloud Messaging发送消息

Firebase Push - 身份验证凭据无效

带有 Firebase (FCM) 推送通知的 Node js

IOS 应用程序中未收到 Firebase 推送通知徽章计数