查询中所有实例的Firebase更新值

时间:2018-10-15 07:23:15

标签: node.js firebase

走不同的路到达相同的目的地,这是第一部分。

但是,真正在寻找一种有效的方法来更新查询找到的所有键,而不管位置如何,这意味着特定顾问的订阅很多,但不必在乎只想更新其令牌。代码在下面,一如既往,nodeJS是我的魔鬼!

为此的Firebase结构:

+colleges
  +Harvard Undergraduate
    +advisor:token
  +Columbia Undergraduate
    +advisor:token



// Write tokens for college subscriptions
exports.updateCollegeTokens = functions.database
.ref('/users/{userId}/fcmtoken/token').onWrite((change, context) => {
const token = change.after.val(); 
var advisor = context.params.userId;

var query = admin.database().ref('/colleges').orderByChild(advisor).equalTo("true");
return query.once('value').then((snapshot) => {
        var college = snapshot.key;
        var ref = `admin.database().ref(${college})`;
        return ref.update({ ${advisor} : token });
        by });
});

1 个答案:

答案 0 :(得分:0)

如果您显示Firebase节点结构,这将有所帮助。在此示例中,不清楚您想要什么。对我来说,您似乎想找到一所大学,顾问是您的用户,其令牌已更新。但是,您可以通过检查userId键是否为真来对其进行过滤,并在获得快照后使用令牌值更新userId键?做更新时,您甚至都没有在路径中设置“学院”。

顺便说一句。如果要进行批量更新,可以这样使用:

  var updates = {};
  updates['/posts/' + newPostKey] = postData;
  updates['/user-posts/' + uid + '/' + newPostKey] = postData;

  admin.database().ref().update(updates);

https://firebase.google.com/docs/database/web/read-and-write#update_specific_fields