Firebase功能中的未定义记录器

问题描述

我正在尝试使用swift,node.js和firebase函数将推送通知发送到firebase。我可以成功推送一些通知,但是我在处理邮件时遇到了麻烦。

我的firebase函数看起来像

image 1

node.js中的函数看起来像

@H_502_8@exports.observeMessages = functions.database.ref('/messages/{fromId}/{toId}').onCreate((snapshot,context) => { const fromId = snapshot.val().fromId; const toId = snapshot.val().toId; console.log('LOGGER --- uid is ' + fromId); console.log('LOGGER --- workerId is ' + toId) })

这些消息存储在Firebase之类的

image 2

我尝试通过以下方式发送这些推送通知

@H_502_8@ var toId = context.params.toId; var fromId = context.params.fromId;

当我将后者发布到我的node.js代码中时,我看到了

image 3

下面是我如何将消息信息发送到firebase

@H_502_8@ fileprivate func sendMessageWithProperties(_ properties: [String: Any]) { let ref = Database.database().reference().child("messages") let childRef = ref.childByAutoId() let toId = user!.uid! let fromId = Auth.auth().currentUser!.uid let timestamp = Int(Date().timeIntervalSince1970) var values: [String: Any] = ["toId": toId,"fromId": fromId,"timestamp": timestamp,"checked": 0] properties.forEach({values[$0] = $1}) childRef.updateChildValues(values) { (error,ref) in if error != nil { print(error!) return } self.inputContainerView.inputTextField.text = nil guard let messageId = childRef.key else { return } let userMessagesRef = Database.database().reference().child("user-messages").child(fromId).child(toId).child(messageId) userMessagesRef.setValue(1) let recipientUserMessagesRef = Database.database().reference().child("user-messages").child(toId).child(fromId).child(messageId) recipientUserMessagesRef.setValue(1) } }

解决方法

问题可能出在ref('/messages/{fromId}/{toId}')中。当您要在messages数组中添加新消息时触发该函数时,请尝试将其更改为ref('/messages/{messageId}')

exports.observeMessages = functions.database.ref('/messages/{messageId}').onCreate((snapshot,context) => {

  const fromId = snapshot.val().fromId;
  const toId = snapshot.val().toId;

  console.log('LOGGER --- uid is ' + fromId);
  console.log('LOGGER --- workerId is ' + toId)
})