Javascript Firebase云函数检查数据库中是否存在不存在的数据

Javascript Firebase云函数检查数据库中是否存在不存在的数据,javascript,node.js,firebase,google-cloud-functions,google-cloud-firestore,Javascript,Node.js,Firebase,Google Cloud Functions,Google Cloud Firestore,我正在寻找如何检查我的云函数中是否存在文档 我下面的函数在增加现有值时可以正常工作,但现在我尝试添加功能,检查前一个值是否存在,是否设置为1 我尝试了不同的方法,但得到了“snapshot.exists”或“TypeError:无法读取docRef.get.then.snapshot处未定义的属性‘count’” var getDoc = docRef.get() .then(snapshot => { if (typeof snapshot._f

我正在寻找如何检查我的云函数中是否存在文档 我下面的函数在增加现有值时可以正常工作,但现在我尝试添加功能,检查前一个值是否存在,是否设置为1

我尝试了不同的方法,但得到了“snapshot.exists”或“TypeError:无法读取docRef.get.then.snapshot处未定义的属性‘count’”

var getDoc = docRef.get()
        .then(snapshot => {

            if (typeof snapshot._fieldsProto.count !== undefined) {
                console.log("haha3", snapshot._fieldsProto.count)

                var count = Number(jsonParser(snapshot._fieldsProto.count, "integerValue"));

                docRef.set({
                        count: count + 1
                    });
            }
            else {
                docRef.set({
                        count: 1
                    });
            }

        });
下面是exists()错误的代码

此代码的错误是:


TypeError:snapshot.exists不是docRef.get.then.snapshot上的函数

var getDoc = docRef.get()
        .then(snapshot => {

            if (typeof snapshot._fieldsProto.count !== undefined) {
                console.log("haha3", snapshot._fieldsProto.count)

                var count = Number(jsonParser(snapshot._fieldsProto.count, "integerValue"));

                docRef.set({
                        count: count + 1
                    });
            }
            else {
                docRef.set({
                        count: 1
                    });
            }

        });

似乎
docRef
指向一个集合或是一个查询。在这种情况下,
snapshot
的类型是
QuerySnapshot


要检查查询是否有任何结果,请使用。

我不断收到错误消息,说空函数或存在函数不是函数(尝试了多次迭代),因此最终我只使用了一个未定义的检查,结果非常理想

var db = event.data.ref.firestore;

    var docRef = db.collection(userID).doc("joined").collection("total").doc("count");


    var getDoc = docRef.get()
        .then(snapshot => {
            console.log("augu1", snapshot)
            if (snapshot._fieldsProto === undefined) {
                console.log("digimon1")
                docRef.set({
                        count: 1
                    });
            }
            else {      
                console.log("haha31", snapshot._fieldsProto.count)

                var count = Number(jsonParser(snapshot._fieldsProto.count, "integerValue"));

                docRef.set({
                        count: count + 1
                    });
            }

        });

事实证明,问题比我想象的要简单得多:
DocumentSnapshot.exists
是只读属性,而不是函数。因此正确的使用方法是:

if snapshot.exists()

检查快照调用时是否存在文档。如果这对您不起作用,请显示确切的错误消息和。刚刚添加了存在错误的代码,该代码的错误是什么?TypeError:snapshot.exists不是docRef.get.then.snapshot的函数
docRef
指向什么?如果是查询或集合,y你得到了一个
QuerySnapshot
,所以你需要检查
!QuerySnapshot.empty
谢谢你的帮助,我仍然得到empty不是一个函数(在它存在之前不是),但我可以用一个未定义的检查来检查它。我将该代码作为另一个答案发布,如果有任何关于它的信息值得你关注,请随时告诉我