首页 > 解决方案 > 如何检查值是否存在,然后使用 JavaScript 在 firebase 中添加或更新值?

问题描述

我有一个应用程序,用户可以在其中登录并添加他们去过的旅行。我的 fb db 结构是这样的

{
  "users": {
    "randomId": {
      "Place1": {
        "name": "Place1",
        "somedata": "oianoiasnfianafs",
        "moredata": "asdasdadasdas",
        "THISKEYIWANTTOUPDATE": [
          {
            "data": "asasfas"
          }
        ]
      }
    }
  }
}

您可以在上面看到我要更新的密钥。但我的问题是,我首先需要检查数据库中是否已经存在 Place1?我该如何做到这一点?我知道我可以打电话set,但不确定这是否是最好的选择?我也知道更新,但我想要下面这个伪代码的逻辑

if (place1) {
 // call update()
} else {
 // cat set()
}

我不确定如何做这if(place1)部分?如果在firebase中检查它是否存在是最佳实践?

标签: javascriptreactjsfirebase

解决方案


您可以尝试使用Object.keys(obj)来获取对象的属性。

假设 userObj 是

   "users": {
      "randomId": {
        "Place1": {
            "name": "Place1",
            "somedata": "oianoiasnfianafs",
            "moredata": "asdasdadasdas",
            "THISKEYIWANTTOUPDATE": [
                {
                    "data": "asasfas"
                },
            ]
        },
      }
   }

你已经提到它可能是多重PlaceNrandomID,那​​么我建议模式可能是:

多种情况,有Place2且值为Place1空:

      "randomId": {
        "Place1": {
         },    
         "Place2": {
            "name": "Place2",
            "somedata": "oianoiasnfianafs",
            "moredata": "asdasdadasdas",
            "THISKEYIWANTTOUPDATE": [
                {
                    "data": "asasfas"
                },
            ]
         }, 

       }

和检查功能:

checkPlace1ExistOrNot=(userObj)=>{
    let tempRandomId = userObj[Object.keys(userObj)[0]]  //It should be vale of "RandomId"
    if(tempRandomId[Object.keys(tempRandomId)[0]])
    {
        return true     // users.randomId.Place1 is exist
    }
    else
    {
        return false    // users.randomId.Place1 is not exist
    }
}

推荐阅读