#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. Такое простое исправление, из-за которого я некоторое время отставал! Большое вам спасибо.