循环使用firebase唯一密钥并向每个密钥添加数据

时间:2016-02-11 13:13:21

标签: firebase

我有这种形式的firebase数据库。

"items":{
  "-Jp9VLYBwENfNVLKYyCG" : {
    "-Jp9VMKkTUggcMrUCO8S" : {
      "author" : "facebook:#########",
      "created" : 1431474107638,
    },
    "-Jp9VobJP0qbSbbEdyW0" : {
      "author" : "facebook:#########",
      "created" : 1431474227548
    }
  },
  "-JpEbifKeRj-_H7TWhQ2" : {
    "-JpEbrnT6SFRFc6U_HWX" : {
      "author" : "facebook:#########",
      "created" : 1431559961683
    },
    "-JpEby5mZuQMsU-9YCpk" : {
      "author" : "facebook:##########",
      "created" : 1431559987495
    }
  }
}

我想将以下对象添加到每个包含作者的$ id并创建键值对。

upVote: {
  active: true,
  total: 0
},
downVote: {
  active: true,
  total: 0
} 

我首先尝试使用DataSnapshot获取值。但它不会在控制台中打印键。这有什么不对?

var ref = new Firebase(FBURL + "/items");
ref.once("value", function(snapshot) {
  console.log("snapshot key: " + snapshot.key());
  snapshot.forEach(function(childSnapshot){
    var key = childSnapshot.key();
    var val = childSnapshot.val();
    console.log("child snapshot key: " + key);
    childSnapshot.forEach(function(deepSnap){
      console.log("deep shot key: " + deepSnap.key());
    });
  });
});

已解决问题是我设置了一些具有读写权限的安全规则。因此不允许我从我调用脚本的用户范围中读取元素。这是一个问题。 完成此步骤后,可以使用以下值轻松更新数据库:

var deepRef = ref.child(key).child(deepSnap.key());
deepRef.update({upVote: {
                            active: true,
                            total: 0
                        },downVote: {
                            active: true,
                            total: 0
                        }});

0 个答案:

没有答案