2016-04-09 61 views
0

我是push将对象放入我的ROOMS数组中,其中.on("child_added", ....)如下所示。该对象的其中一个部分是其他对象的数组(Playerobj,它具有一些属性,如id,name等)。我如何分配给ROOMS.players因为snap.child("players").val()不起作用(EXCEPTION: Error trying to diff '[object Object]'snap.child("players").val()结构看起来是这样的:将FirebaseDataSnapshot转换为JS对象

-rooms 
    -id 
    -name 
    -isRoomFull 
    +board 
    -players 
     -kEFvdfeff84fdfdff 
      -id 
      -name 
     -kEFvd4545dfjh9fvv 
      -id 
      -name 



getRooms() { 
this.roomsRef.on("child_added", function(snap) { 
    ROOMS.push({ 
     id: snap.child("id").val(), 
     name: snap.child("name").val(), 
     players: [], //how to assign to this property 
     isRoomFull: snap.child("isRoomFull").val(), 
     board: snap.child("board").val(), 
    }) 
}); 

回答

0

我会尝试这样的事情:

var obj = snap.child("players").val().players; 
var players = Object.keys(obj).map(key => return obj[key]); 

ROOMS.push({ 
    id: snap.child("id").val(), 
    name: snap.child("name").val(), 
    players: players, 
    isRoomFull: snap.child("isRoomFull").val(), 
    board: snap.child("board").val(), 
}); 

详情请参阅此问题:

+0

这很好。我不得不修改一些东西 'var obj = snap.child(“players”)。val(); var player = Object.keys(obj).map(key => {return obj [key]});' –