如何在云功能中从firestore获取数据



我需要从云函数中的firestore获取用户令牌。

用户令牌存储如下:

void saveToken(String token) async {
await FirebaseFirestore.instance
.collection("User tokens")
.doc(userId)
.set({'token': token});
}

这就是目标。当在集合"聊天消息"上创建消息时,抓住";聊天id"值和发送消息"的用户;用户id";。

查询集合";聊天;使用";聊天id"价值抓住";工作用户数据";value(这是一个包含两个对象的数组,每个对象都包含聊天中涉及的用户(userName,userId((。

从";工作用户数据";,我需要获取应该接收消息的成员的userId。

查询";用户令牌";收集以获取";令牌";价值使用";令牌";值,向发送通知

这是我的云功能:正如你所看到的,我已经对令牌进行了硬编码,看看我是否可以向该设备发送通知。。。。这很完美。现在我需要让这个动态。。。

const functions = require("firebase-functions");
const admin = require("firebase-admin");
const { database } = require("firebase-admin");
// eslint-disable-next-line max-len
const tokens = ["JNKDNASNDAUIU324234....."];
admin.initializeApp();
// exports.onCreate = functions.firestore
//     .document("chat/{docId}")
//     .onCreate((snapshot, context) => {
//       console.log(snapshot.data());
//       console.log("fake data");
//     });
exports.onChatMessageCreate = functions.firestore
.document("chat messages/{docId}")
.onCreate( (snapshot, context) => {
console.log(snapshot.data());
// fetch user to send message to
// admin.database().ref("/")
const payload = {
// eslint-disable-next-line max-len
notification: {title: snapshot.data()["userName"], body: snapshot.data()["Chat message"], sound: "default"},
// eslint-disable-next-line max-len
data: {click_action: "FLUTTER_NOTIFICATION_CLICK", message: "Sample Push Message"},
};
try {
admin.messaging().sendToDevice(tokens, payload);
console.log("NOTIFICATION SEND SUCCESSFULLY");
} catch (e) {
console.log("ERROR SENDING NOTIFICATION");
console.log(e);
}
});

所以我只需要知道如何从云功能查询集合

Node.js中有两种方法可以查询集合:通过then()async/await

使用promise进行查询:

const collectionRef = admin.firestore().collection("yourCollection");
return collectionRef.get().then((collections) => {
//you can now use your collections here
});

使用async/await:

const collectionRef = admin.firestore().collection("yourCollection");
const collections = await collectionRef.get();

相关内容

  • 没有找到相关文章

最新更新