我有以下代码,下面是这个链接的示例:https://gist.github.com/CodingDoug/814a75ff55d5a3f951f8a7df3979636a。只是返回错误。
const functions = require('firebase-functions');
const admin = require('firebase-admin');
admin.initializeApp(functions.config().firebase);
const db = admin.firestore();
exports.alertHelp = functions.firestore
.document('chamados/{userId}')
.onWrite(async (change, context) => {
try {
const snapshot = change.after;
const val = snapshot.data();
const tid = val.tid;
const collection = db.collection('permissons');
const query = await collection.where('tid', '==', tid).get();
const token = query.data().fcmToken;
const promises = [];
token.forEach(fcm => {
const p = admin.firestore().doc(`{userId}/${fcm}`).get();
promises.push(p);
});
const snapshots = await Promise.all(promises);
const results = [];
snapshots.forEach(snap => {
const data = snap.data().fcmToken;
results.push(data);
})
console.log(results);
} catch (error) {
console.error(error)
}
});
错误
query.data不是函数
在行中:
const query = await collection.where('tid', '==', tid).get();
query
将是QuerySnapshot类型的对象。从链接的API文档中可以看到,它没有data()
方法。这就是错误试图告诉你的。
QuerySnapshot可以包含零个或多个DocumentSnapshot对象。您必须编写代码来检查和迭代这些结果。可以使用QuerySnapshot上的forEach
方法或docs
属性来执行此操作。您可能需要查看相关文档。