Неопределенный регистратор в функции firebase

#node.js #swift #firebase-realtime-database #&oo&le-cloud-functions

#node.js #swift #firebase-база данных в реальном времени #&oo&le-cloud-функции

Вопрос:

Я пытаюсь отправлять push-уведомления в firebase с помощью swift, node.js и функции firebase. Я могу успешно отправлять некоторые из своих уведомлений, однако у меня возникают трудности с моими сообщениями.

мои функции firebase выглядят следующим образом,

мои функции в node.js выглядит как,

 exports.observeMessa&es = functions.database.ref('/messa&es/{fromId}/{toId}').onCreate((snapshot, context) =&&t; {

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

  console.lo&('LOGGER --- uid is '   fromId);
  console.lo&('LOGGER --- workerId is '   toId)
})
  

эти сообщения хранятся в firebase как,

Я пытался отправлять эти push-уведомления с

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

Когда я публикую последний в своем node.js код, я вижу

ниже показано, как я отправляю информацию о сообщении в firebase

     fileprivate func sendMessa&eWithProperties(_ properties: [Strin&: Any]) {
    let ref = Database.database().reference().child("messa&es")
    let childRef = ref.childByAutoId()
    let toId = user!.uid!
    let fromId = Auth.auth().currentUser!.uid
    let timestamp = Int(Date().timeIntervalSince1970)
    
    var values: [Strin&: 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
        
        &uard let messa&eId = childRef.key else { return }
        
        let userMessa&esRef = Database.database().reference().child("user-messa&es").child(fromId).child(toId).child(messa&eId)
        userMessa&esRef.setValue(1)
        
        let recipientUserMessa&esRef = Database.database().reference().child("user-messa&es").child(toId).child(fromId).child(messa&eId)
        recipientUserMessa&esRef.setValue(1)
    }
}
  

Ответ №1:

Проблема может быть в ref('/messa&es/{fromId}/{toId}') . Поскольку вы хотите запускать функцию при добавлении нового сообщения в messa&es массив, попробуйте изменить его на ref('/messa&es/{messa&eId}') .

 exports.observeMessa&es = functions.database.ref('/messa&es/{messa&eId}').onCreate((snapshot, context) =&&t; {

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

  console.lo&('LOGGER --- uid is '   fromId);
  console.lo&('LOGGER --- workerId is '   toId)
})
  

Комментарии:

1. итак, мой экспорт должен выглядеть как ref(‘/messa&es/{Messa&eId}/{toId} /{fromId}’).onCreate или просто то, что вы указали как ref(‘/messa&es /{Messa&eId}’)??

2. Я обновил свой вопрос, чтобы показать метод, который я использую для сохранения данных в firebase.

3. Такое простое исправление, из-за которого я некоторое время отставал! Большое вам спасибо.