Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/413.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在firebase中更新密钥的特定(第n个)子级_Javascript_Firebase_Firebase Realtime Database - Fatal编程技术网

Javascript 如何在firebase中更新密钥的特定(第n个)子级

Javascript 如何在firebase中更新密钥的特定(第n个)子级,javascript,firebase,firebase-realtime-database,Javascript,Firebase,Firebase Realtime Database,我知道Firebase有一些非常基本的查询功能,包括orderBy,limito,startAt,endAt,等等。用于更新的方法有update,set。在我的案例a中,我的结构如下: 因此,在我的PIN上有一个键列表,如何用javascript更新特定键的子PIN 例如,我现在想更新第二个键的pin。现在它有了20,我想把它设置为30。但是请记住,大多数列表都有两个以上的键,因此可能稍后我想更新生成的第四个键的子pin 我该怎么做呢?像“第二个”或“第四个”这样的相对顺序在这里是非常无用的。

我知道Firebase有一些非常基本的查询功能,包括orderBylimitostartAtendAt,等等。用于更新的方法有updateset。在我的案例a中,我的结构如下:

因此,在我的PIN上有一个键列表,如何用javascript更新特定键的子PIN

例如,我现在想更新第二个键的pin。现在它有了20,我想把它设置为30。但是请记住,大多数列表都有两个以上的键,因此可能稍后我想更新生成的第四个键的子pin

我该怎么做呢?

像“第二个”或“第四个”这样的相对顺序在这里是非常无用的。如果要使用键
-KrnO…Ho
更新节点的pin,可以使用:

firebase.database().ref("PIN/`-KrnO...Ho/PIN").set(30);
如果要更新名为cindy的用户的PIN,首先需要查询以确定她的密钥:

firebase.database().ref("PIN").orderByChild("name").equalTo("cindy").once("value", function(snapshot) {
  snapshot.forEach(function(user) {
    user.ref.child("PIN").set(30);
  });
})

第二个代码段中的循环是必需的,因为从技术上讲,可以有多个名为cindy的用户。

亲爱的Frank,谢谢你有用的回答。但是,我还想知道是否有一种方法可以“ref”表示“second”或“4th”键,而不管该键的值是多少。如果不下拉所有数据,就无法获得索引访问。“第二个”节点通常有一个含义,这就是为什么我展示了如何按名称过滤。