【问题标题】:How to write data into a specific location Firebase Web如何将数据写入特定位置 Firebase Web
【发布时间】:2018-06-27 07:05:55
【问题描述】:

我想将数据写入数据库中的特定位置。假设我在数据库中有几个用户。他们每个人都有自己的个人信息,包括他们的电子邮件。我想根据电子邮件找到用户,也就是说使用他的电子邮件(但我不知道它到底是谁的电子邮件,但不管是谁用那个用户的信息做一些事情)。为了更明显,这是我的数据库示例。

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

【问题讨论】:

    标签: javascript firebase firebase-realtime-database


    【解决方案1】:

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

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

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

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

    【讨论】:

    • ref.child('users').orderByChild("Email").equalTo("name1@yahoo.com") 使用这一行或查询我们找到我们需要的用户,但在找到想要的用户 我想更改他的所有信息,我想使用“set”方法覆盖现有对象。我不明白您所说的“一旦您从查询中获得用户 ID”是什么意思。我不需要任何用户id,我需要找到我想要的用户,我们通过你我写的第一条语句成功地做到了,剩下要做的就是设置“new_object”(这是一个对象)进入该用户的信息,覆盖现有的信息
    • @Suren - 第一个查询返回的对象应该有一个 $id 属性。您的 set 调用应该使用 $id 来识别您正在更新的对象,就像我在上面所做的那样。 userId = 快照.key
    【解决方案2】:

    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);
    });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多