Как читать данные из базы данных firestore без триггерных функций в файле index.js? - PullRequest
0 голосов
/ 30 октября 2019

Я сохранил некоторые данные в firestore. Существует коллекция (книги), которая ссылается на документ (идентификатор книги), а идентификатор книги имеет такие поля, как имя, изображение, местоположение, название. У меня есть другая коллекция (Пользователи), в которой есть документ (идентификатор пользователя). Идентификатор пользователя имеет поле в качестве идентификатора токена. Когда бы ни происходила какая-либо операция записи в коллекции книг, я должен отправить уведомление всем пользователям, используя идентификатор токена. Я могу отправить уведомление всем пользователям, если у меня есть жестко запрограммированный идентификатор токена в моем файле index.js в firestore. Но я должен отправлять уведомления динамически. Я не могу прочитать идентификатор пользователя из коллекции пользователей.

'use-strict'

const functions = require('firebase-functions');
const admin = require('firebase-admin');
admin.initializeApp(functions.config().firebase);

    exports.sendNotification = functions.firestore.document("Books/{book_id}").onWrite((change, context) => {
const book_id = context.params.book_id;

console.log("Book ID: " + book_id);

return admin.firestore().collection("Users").doc(user_id).collection("Notifications").doc(notification_id).get().then(queryResult => {

      const tokenid= queryResult.data();

     const token_id='fOGd94em4ik:APA91bHyZBGBYvO_ZFlLO1lWL1LU-r-1JkuF3fuKieWvV4HuPDKAiG5hdn-BQrMPFeICBdKZ3UR2nkM2PMxClEzVI3V2C38OxoP-1w71Dz-GbO0sbDlg-nswCMZ';

     const payload = {
            notification : {
                title : 'Hi',
                body : 'New Books list is available in the database! Please check the book store',
                icon : "default"
            }
        };

        return admin.messaging().sendToDevice(token_id, payload).then(result => {
            //console.log("Notification sent");
            return 0;
        });

});
});

В приведенном выше коде я хочу прочитать user_id от пользователей коллекции. Как я могу читать это, поскольку это не связано с коллекционными книгами, я не могу читать.

1 Ответ

0 голосов
/ 30 октября 2019

Если я хорошо понимаю и если token_id является ключом в записи пользователей, вы можете попробовать что-то вроде этого:

admin.firestore().collection('Users')
.where('token_id', '==', 'YOUR_TOKEN').get()
.then(snap => snap.docs.map(user => { 
   // iterate on your notification process
})
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...