gpt4 book ai didi

javascript - Cloud Functions 返回未定义的预期 Promise 或值

转载 作者:行者123 更新时间:2023-12-01 02:04:51 24 4
gpt4 key购买 nike

我正在尝试使用以下函数来计算我的集合中的文档总数:https://stackoverflow.com/a/49407570/8312532但我看到 firebase 功能已更新:https://firebase.google.com/docs/functions/beta-v1-diff#cloud-firestore

因此我尝试这样做:

const functions = require('firebase-functions');

const admin = require('firebase-admin');
admin.initializeApp();

exports.documentWriteListener =
functions.firestore.document('domiciliarios/{uid}')
.onWrite((change, context) => {

if (!change.before) {
// New document Created : add one to count
db.doc(docRef).get().then(snap => {
db.doc(docRef).update({numberOfDocs: snap.numberOfDocs + 1});
return;
});

} else if (change.before && change.after) {
// Updating existing document : Do nothing
return;

} else if (!change.after) {
// Deleting document : subtract one from count
db.doc(docRef).get().then(snap => {
db.doc(docRef).update({numberOfDocs: snap.numberOfDocs - 1});
return;
});
}

});

但是当我在 Firestore 中添加新文档时,出现以下错误:

Function returned undefined, expected Promise or value

有什么想法吗?

最佳答案

Firestore 触发器应在所有异步工作完成时返回一个解析的 promise ,如果没有工作,则返回 null。您的三种情况中的每一种都需要有适当的返回值。

    if (!change.before) {
// New document Created : add one to count
return db.doc(docRef).get().then(snap => {
return db.doc(docRef).update({numberOfDocs: snap.numberOfDocs + 1});
});
} else if (change.before && change.after) {
// Updating existing document : Do nothing
return null;
} else if (!change.after) {
// Deleting document : subtract one from count
return db.doc(docRef).get().then(snap => {
return db.doc(docRef).update({numberOfDocs: snap.numberOfDocs - 1});
});
}

如果您打算花时间使用 Cloud Functions,那么您绝对应该了解 Promise 的工作原理。有一个由三部分组成的视频教程,从这里开始:https://www.youtube.com/watch?v=7IkUgCLr5oA&list=PLl-K7zZEsYLkPZHe41m4jfAxUi0JjLgSM&index=1

关于javascript - Cloud Functions 返回未定义的预期 Promise 或值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50193877/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com