如何将数据写入特定位置Firebase Web

时间:2018-06-26 22:32:44

标签: javascript firebase firebase-realtime-database

我想将数据写入数据库中的特定位置。假设我在数据库中有几个用户。他们每个人都有自己的个人信息,包括电子邮件。我想根据电子邮件来查找用户,也就是说使用他的电子邮件(但是我不知道确切是谁的电子邮件,但是无论是谁处理的都是该用户的信息)。为了更加明显,这是我的数据库示例。

enter image description here

现在,在处理我的一个javascript文件时,当用户说name1更改了他的名字时,我在javascript中更新了我的对象,并希望替换ID为“ -LEp2F2fSDUt94SRU0cx”的整个对象。简而言之,我想将此更新的对象写在路径(“ Users / -LEp2F2fSDUt94SRU0cx”)中,而无需手工完成,而只是“知道”电子邮件。因此逻辑是“去用电子邮件“ name1@yahoo.com”查找用户,然后用新的更新对象替换整个对象”。我尝试使用orderByChild(“ Email”)。equalTo(“ name1@yahoo.com”)。set(updated_object),但是我猜这种语法不起作用。希望我能解释自己。

2 个答案:

答案 0 :(得分:0)

第一部分是查询,与要更新的帖子分开。这部分是获取值的查询:

ref.child('users').orderByChild("Email").equalTo("name1@yahoo.com")

要进行更新,一旦从查询结果中获得了用户ID,就需要执行以下操作:

ref.child('users').child(userId).child("Email").update(newValue);

答案 1 :(得分:0)

  

firebase.database.Query

     

查询对数据库位置的数据进行排序和过滤,因此仅   包含子数据的子集。这可以用来订购   通过某些属性(例如,高度   恐龙)以及限制大量物品(例如,   聊天消息)下的数字以适合与   客户。查询是通过将一个或多个   此处定义的过滤器方法。

// Find all dinosaurs whose height is exactly 25 meters.
var ref = firebase.database().ref("dinosaurs");
ref.orderByChild("height").equalTo(25).on("child_added", function(snapshot) {
  console.log(snapshot.key);
});