【问题标题】:Undefined logger in firebase functionfirebase 函数中未定义的记录器
【发布时间】:2020-08-11 04:51:39
【问题描述】:

我正在尝试使用 swift、node.js 和 firebase 函数向 firebase 发送推送通知。我可以成功推送我的一些通知,但是我很难处理我的消息。

我的 firebase 函数看起来像,

我在 node.js 中的函数看起来像,

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 中,

我已尝试使用

发送这些推送通知
  var toId = context.params.toId;
  var fromId = context.params.fromId;

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

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

    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)
    }
}

【问题讨论】:

    标签: node.js swift firebase-realtime-database google-cloud-functions


    【解决方案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)
    })
    

    【讨论】:

    • 所以我的导出应该看起来像 ref('/messages/{messageId}/{toId}/{fromId}').onCreate 或者只是你输入的 ref('/messages/{messageId }')??
    • 我已经更新了我的问题以显示我用来将数据保存到 firebase 中的方法。
    • 如此简单的修复让我滞后了一段时间!非常感谢。
    猜你喜欢
    • 2018-12-20
    • 2021-09-19
    • 1970-01-01
    • 1970-01-01
    • 2020-11-23
    • 1970-01-01
    • 2022-01-04
    • 1970-01-01
    • 2021-08-15
    相关资源
    最近更新 更多