Firebase云功能检查数据库是否存在不存在的数据

时间:2017-12-11 14:56:32

标签: javascript node.js firebase google-cloud-functions google-cloud-firestore

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

我尝试了不同的方法,但是我得到了像“snapshot.exists”或“TypeError:无法在docRef.get.then.snapshot

中读取未定义的属性'count'
curl localhost:8080

下面是exists()错误的代码

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
                    });
            }

        });

此代码的错误是:

  

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

3 个答案:

答案 0 :(得分:1)

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

要检查查询是否有任何结果,请使用QuerySnapshot.empty

答案 1 :(得分:0)

我不断收到错误,说空或存在不是函数(尝试了多次迭代),所以最终我只使用了一个未定义的检查,它完美地工作。

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
                    });
            }

        });

答案 2 :(得分:0)

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

if snapshot.exists()