Я использую облачные функции firebase для прослушивания событий значений базы данных, это мой код
var functions = require('firebase-functions');
var firebase = require('firebase-admin');
var serviceAccount = require("./serviceAccountKey.json");
firebase.initializeApp({
credential : firebase.credential.cert(serviceAccount),
databaseURL: "https://*******.firebaseio.com"
});
exports.notifications = functions.database.ref('/chat/{senderID}/{destinationID}/messages/{pushID}')
.onWrite(event => {
var eventSnapshot = event.data;
var sender = eventSnapshot.child('sender').val();
var message = eventSnapshot.child('message').val();
var destination = eventSnapshot.child('destination').val();
if (event.params.senderID === sender)
sendMessage(message,sender,destination);
}
);
function sendMessage(message, sender, destination) {
var senderUser = firebase.database().ref('users/'+sender+'/name');
var tokenUser = firebase.database().ref('fcm/'+destination+'/token');
tokenUser.once('value').then(function(tokenSnapshot) {
var token = tokenSnapshot.val();
console.log(token);
}, function (errorObject) {
console.log("The read failed: " + errorObject.code);
});
}
Функция onWrite выполняется нормально, но tokenUser.once()
не выполняется.
event.params.senderID === sender
. Поместите туда несколько операторов журнала с тем, что они выводят, чтобы мы могли хотя бы знать, что происходит, когда вы его запускаете. - person Ced   schedule 23.08.2017fcm/'+destination+'/token
? - person Ced   schedule 23.08.2017var sender = eventSnapshot.ref.child('sender').val();
.data
имеет много свойств, одно из которых -ref
. Возможно, вам придется использовать.adminRef
, если это данные, к которым клиент не может получить доступ. - person Jen Person   schedule 23.08.2017console.log('my token is ', token);
- person Ced   schedule 23.08.2017