Я пытаюсь получить текущий идентификатор пользователя из приложения, отправляя запросы https для вызова функций из клиентского приложения. Это работает, и я получаю UID. Проблема заключается в том, что всякий раз, когда запускается функция onWrite (), мне нужно отправлять уведомления конкретному пользователю под конкретным идентификатором пользователя. Как я могу передать uid, полученный из моих функций https, в функции триггера?
Я только что получил идентификатор пользователя текущего пользователя из клиентского приложения, используя https.onCall ().
Затем в функции триггера я пытаюсь отправить уведомления определенному пользователю, классифицированному uid, с помощью API push-уведомлений expo.
функция / index.js
const functions = require('firebase-functions');
var fetch = require('node-fetch')
const admin = require('firebase-admin')
admin.initializeApp(functions.config().firebase)
exports.getUid = functions.https.onCall((data, context) => {
uid = data.text
console.log(data.text)
})
exports.makerOrders = functions.database.ref('orders')
.onWrite((snapShot, context) => {
console.log('functions is triggered :)')
return admin.database().ref('Notifications').child(uid)
.once('value')
.then((shot) => {
var message = []
var tokens = shot.val().expoTokens;
if (tokens) {
message.push({
"to": tokens,
"body": "Notifications are working fine :)"
})
}
return Promise.all(message)
}).then(message => {
fetch('http://exp.host/--/api/v2/push/send', {
method: "POST",
headers: {
"Accept": "application/json",
"Content-Type": "application/json"
},
body: JSON.stringify(message)
})
return Promise.all(message)
})
})
App.js
var uid = firebase.auth().currentUser.uid
var getUid = firebase.functions().httpsCallable('getUid')
getUid({text: uid}).then(result => {
var msg = result.data
console.log(msg)
console.log('Called successfully :)')
}).catch(error => {
console.log('Error :( in sending the requests')
});
Я ожидаю получить значение uid текущего пользователя из приложения, чтобы я мог отправлять push-уведомления этому конкретному пользователю.
Я не могу получить uid для текущего авторизованного пользователя.