如何在不使用index.js文件中的触发器功能的情况下从Firestore数据库读取数据?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在不使用index.js文件中的触发器功能的情况下从Firestore数据库读取数据?相关的知识,希望对你有一定的参考价值。

我已经在Firestore中存储了一些数据。有集合(书籍)可链接到文档(书籍ID),并且书籍ID具有名称,图像,位置,标题等字段。我有另一个具有文档(用户ID),用户ID具有字段作为令牌ID的collection(Users)。每当书籍收藏中将有任何写操作时,我都必须使用令牌ID向所有用户发送通知。如果我在firestore的index.js文件中具有硬编码的令牌ID,则可以向所有用户发送通知。但是我必须动态发送通知。我无法从集合用户中读取用户ID。

'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。由于它没有与收藏书链接,我该如何阅读。我无法阅读。

答案

如果我了解得很好,并且如果token_id是用户记录中的键,则可以尝试这样的操作:

admin.firestore().collection('Users')
.where('token_id', '==', 'YOUR_TOKEN').get()
.then(snap => snap.docs.map(user => { 
   // iterate on your notification process
})

以上是关于如何在不使用index.js文件中的触发器功能的情况下从Firestore数据库读取数据?的主要内容,如果未能解决你的问题,请参考以下文章

node.js 如何在不指定文件夹路径的情况下使用 index.js 解析所需的文件夹?

如何在不影响 heroku 服务器中的特定文件的情况下推送所有文件?

如何将 lib.js 文件中的 Discord.js 函数调用到 index.js 中?

如何更改NextJS根路径页面

在不使用数据库触发器的情况下,无法使用 firebase 云功能更新 firebase 数据库

当您单击它时,IE 不会在不确定的复选框上触发“更改”事件