如何检查SET和WHERE上是否存在文档

时间:2019-04-28 16:37:30

标签: javascript firebase google-cloud-firestore google-cloud-functions

我正在尝试更新PITA非规范化的数据库结构。 我知道已经有关于如何检查文档是否存在的答案,即使文档非常清楚,但是我找不到任何可以检查文档是否存在于更新“ set”和“ where”上的内容。

首先我想在更新之前检查一个文档是否存在

vectorLayer.set("name", "myLayer");
map.on("click", function(evt) {
   var feature = map.forEachFeatureAtPixel(evt.pixel,
       function(feature, layer) {
          if (feature) {
             console.log(layer.get("name") + " was clicked.");
        }
     });
  });

有什么方法可以检查该文档是否存在,还是应该先阅读以了解该文档是否存在

 const staffRef = db.collection("staff").doc(uid)

    return staffRef.set({
        employeeProfile: employeeProfile
    }, {
            merge: true
        })...

第二我要检查多个文档的位置

    const staffRef = db.collection("staff").doc(uid)
    return staffRef.get()
        .then((doc) => {
            if (doc.exists) {
                return staffRef.set({
                    employeeProfile: employeeProfile
                }, {...

forEach之后是否应该阅读每个文档?

1 个答案:

答案 0 :(得分:0)

第一答案:是的,对于单个文档,您必须首先使用get()方法来确定该文档是否存在。

  

对于DocumentSnapshot,它指向不存在的文档,   任何数据访问都将返回“未定义”。您可以使用exists   属性以明确验证文档的存在。

第二回答:否,对于Query的结果,您无需检查每个文档:通过循环{获得的每个doc {1}}确实存在。

  

一个QuerySnapshot包含零个或多个querySnapshot.forEach()   代表查询结果的对象。