Firebaseのドキュメントやその他のSOの投稿に従って、デプロイに成功したクラウド関数のパラメーター値にアクセスしてみました。
残念ながら、私はまだ受け取っています
タイプエラー:未定義のプロパティ 'id'を読み取れません
Event.paramsをログに記録しましたが、未定義として出力されているため、問題は理解できますが、構文的にparam値を導出する方法がわかりません。
以下は参考のために私のjsコードです:
exports.observeCreate = functions.firestore.document('/pathOne/{id}/pathTwo/{anotherId}').onCreate(event => {
console.log(event.params);
//event prints out data but params undefined...
const data = event.data()
var id = event.params.id;
return admin.firestore().collection('path').doc(id).get().then(doc => {
const data = doc.data();
var fcmToken = data.fcmToken;
var message = {
notification: {
title: "x",
body: "x"
},
token: fcmToken
};
admin.messaging().send(message)
.then((response) => {
console.log('Successfully sent message:', response);
return;
})
.catch((error) => {
console.log('Error sending message:', error);
return;
});
return;
})
})
Firebase-functionsモジュールに1.0より前のAPIを使用していますが、インストールしたモジュールの実際のバージョンは1.0以降です。 APIは1.0で変更されました。 ここで変更について読んでください 。
Firestore(およびその他のタイプの)トリガーは、タイプ EventContext の2番目のパラメーターを受け取るようになりました。これには、event.paramsにあったデータを含むparams
というプロパティがあります。
exports.observeCreate = functions.firestore.document('/pathOne/{id}/pathTwo/{anotherId}').onCreate((snapshot, context) => {
console.log(context.params);
console.log(context.params.id);
});
また、Firestoreトリガーに関する最新情報については、 ドキュメントをお読みください をご覧ください。