我的代码:
Timeout was reached
错误:
获取文档时出错TypeError: event.data.ref.set(...)。sendToDevice不是函数
在db.collection.doc.get.then.then(/user_code/index.js:117:50)
at process._tickDomainCallback(internal / process / next_tick.js:135:7)
答案 0 :(得分:2)
此处涉及两个单独的Firebase产品:
管理SDK for Cloud Messaging上存在sendToDevice
方法,而不是您尝试调用它的Firestore数据库引用。
要解决此问题,您首先需要将Admin SDK导入index.js
:
const admin = require('firebase-admin');
admin.initializeApp(functions.config().firebase);
然后修改第1步和第2步的功能。它应该如下所示:
// Load the tokens from Firestore
db.collection('fcmTokens').doc('token_id').get().then((doc) => {
console.log(doc.id, '=>', doc.data());
const data = doc.data();
token = data.token;
console.log("token", token);
const payload = {
notification: {
title: 'hello',
}
};
return admin.messaging().sendToDevice(token, payload)
})
.catch((err) => {
console.log('Error getting documents', err);
return err;
});