Javascript 云函数返回未定义的预期承诺或值

Javascript 云函数返回未定义的预期承诺或值,javascript,firebase,google-cloud-firestore,google-cloud-functions,Javascript,Firebase,Google Cloud Firestore,Google Cloud Functions,我正在尝试使用以下函数计算我的收藏中的文档总数:但我看到firebase函数已更新: 因此,我尝试这样做: const functions = require('firebase-functions'); const admin = require('firebase-admin'); admin.initializeApp(); exports.documentWriteListener = functions.firestore.document('domiciliarios/{uid

我正在尝试使用以下函数计算我的收藏中的文档总数:但我看到firebase函数已更新:

因此,我尝试这样做:

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触发器应该在所有异步工作完成时返回解析的承诺,如果没有工作,则返回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});
        });
    }

如果你打算花时间使用云功能,你肯定应该了解承诺是如何工作的。这里有一个由三部分组成的视频教程:

Firestore触发器应该返回一个承诺,在所有异步工作完成时解析,如果没有工作,则返回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});
        });
    }

如果你打算花时间使用云功能,你肯定应该了解承诺是如何工作的。这里有一个由三部分组成的视频教程:

谢谢@Doug Stevenson,它工作正常,使函数没有错误。一个问题:如何打印html组件中的文档总数?我正在调用
{{numberOfDocs}}
,但是我没有得到任何结果,或者我如何看待这个主题?。再次感谢,我还是会看视频的。如果你有后续问题,请单独问。没关系。谢谢你的帮助。谢谢@Doug Stevenson这项工作,使函数没有错误。一个问题:如何打印html组件中的文档总数?我正在调用
{{numberOfDocs}}
,但是我没有得到任何结果,或者我如何看待这个主题?。再次感谢,我还是会看视频的。如果你有后续问题,请单独问。没关系。谢谢你的帮助。