javascript - 部署 Firebase-Cloud-Function 时的 JavaScript Promise EsLint 问题
问题描述
当我尝试通过版本 8.6.0 中 Firebase-Tools CLI 的命令“firebase deploy --only functions”部署以下 Firebase Javascript 函数时,出现以下错误。
exports.notifyNewMessage = functions.firestore.document("posts/{postId}").onCreate((docSnapshot, context) => {
firestore.collection('accounts').get().then(function (querySnapshot) {
querySnapshot.forEach(function (doc) {
// doc.data() is never undefined for query doc snapshots
console.log(doc.id, " => ", doc.data());
return doc.data().name;
});
});
});
我在官方 firebase 文档中找到了这个示例代码:https ://firebase.google.com/docs/firestore/query-data/get-data#get_all_documents_in_a_collection
当我尝试部署代码时,正在运行 esLint Check,我收到以下错误:
2:5 error Expected catch() or return promise/catch-or-return
2:49 warning Unexpected function expression prefer-arrow-callback
2:49 error Each then() should return a value or throw promise/always-return
3:31 warning Unexpected function expression prefer-arrow-callback
我必须如何修复这些错误?有人可以举个例子,Catch 的 Promise 应该是什么样子的?
我的目标是让用户帐户数据记录在控制台中,以便以后进行进一步的操作。但我还不知道如何让这些用户数据记录在控制台中。
解决方案
如果您的目标是将帐户集合的文档记录到 Cloud Function 控制台,则以下内容应该可以解决问题:
exports.notifyNewMessage = functions.firestore.document("posts/{postId}").onCreate((docSnapshot, context) => {
return firestore.collection('accounts').get() // We return the promise chain, see the video series mentioned below
.then(querySnapshot => { // Unexpected function expression
querySnapshot.forEach(doc => { // Unexpected function expression
// doc.data() is never undefined for query doc snapshots
console.log(doc.id, " => ", doc.data());
});
return null; // Each then() should return a value or throw
})
.catch(error => {
console.log(error.message);
return null;
});
请注意,您必须在后台触发的云函数中返回 Promise 或值。我建议您观看 Firebase 视频系列中关于“JavaScript Promises”的 3 个视频:https ://firebase.google.com/docs/functions/video-series/ ,其中解释了这一关键点。
另请注意,您需要在 Cloud Function 中使用 Admin SDK,因此firestore
应声明如下:
// The Cloud Functions for Firebase SDK to create Cloud Functions and setup triggers.
const functions = require('firebase-functions');
// The Firebase Admin SDK to access Cloud Firestore.
const admin = require('firebase-admin');
admin.initializeApp();
const firestore = admin.firestore();
exports.notifyNewMessage = functions.firestore
.document("posts/{postId}")
.onCreate((docSnapshot, context) => {...});
推荐阅读
- flask - Flask-JWT-Ext get_current_user(), get_jwt_identity() returns None despite having tokens
- javascript - Error implementing stripe payment in deployment (Heroku)
- r - lmer 中的 predict() 无法识别 id 变量
- unix - Replacing all values from 4 columns in "|" seperated file using AWK in unix
- mongodb - using gte and lte with dates in mongodb
- flutter - 使用 Flutter 表日历构建页面时如何立即导入数据
- machine-learning - How to create and use PyTorch learnable scalar variables outside of nn.Module?
- python - Why is pandas DataFrame.to_csv float_format option using the old-style formatting?
- javascript - can't have '<' inside a paragraph in react.js
- python - 如何使用 python 绘制 exp(x/y) 的 3D 绘图?