我正在寻找如何检查我的云功能中是否存在文档 我只是增加一个现有值时,我的函数可以正常工作,但现在我正在尝试添加功能,它检查前一个值是否存在以及它是否设置为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上的函数
答案 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()