我想将数据写入数据库中的特定位置。假设我在数据库中有几个用户。他们每个人都有自己的个人信息,包括电子邮件。我想根据电子邮件来查找用户,也就是说使用他的电子邮件(但是我不知道确切是谁的电子邮件,但是无论是谁处理的都是该用户的信息)。为了更加明显,这是我的数据库示例。
现在,在处理我的一个javascript文件时,当用户说name1更改了他的名字时,我在javascript中更新了我的对象,并希望替换ID为“ -LEp2F2fSDUt94SRU0cx”的整个对象。简而言之,我想将此更新的对象写在路径(“ Users / -LEp2F2fSDUt94SRU0cx”)中,而无需手工完成,而只是“知道”电子邮件。因此逻辑是“去用电子邮件“ name1@yahoo.com”查找用户,然后用新的更新对象替换整个对象”。我尝试使用orderByChild(“ Email”)。equalTo(“ name1@yahoo.com”)。set(updated_object),但是我猜这种语法不起作用。希望我能解释自己。
答案 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); });