2013-11-11 4 views
0

Я пытаюсь создать вложенную структуру данных в Firebase, которая выглядит следующим образом:Создание иерархической структуры данных в Firebase

{ 
    things: { 
     <thingId>: { 
      name: 'My thing' 
      sub_things: { 
       <sub_thing_id>: { 
        name: 'Sub thing' 
       } 
      } 
     } 
    } 
} 

Так что я сделал это:

thingsRef = new Firebase('http://my.firebaseio.com/things'); 
thingsRef.push({name: 'My thing'}); 
thingsRef.child('sub_things').push({name: 'Sub thing'}); 

Но sub_things никогда не синхронизируется с сервером. Идеи? Я хочу получить локальную копию немедленно.

ответ

3

Это потому, что вы вызываете .child('sub_things') на оригинал thingsRef вместо ребенка, который вы только что создали. Попробуйте выполнить следующее:

thingsRef = new Firebase('http://my.firebaseio.com/things'); 
var childRef = thingsRef.push({name: 'My thing'}); 
childRef.child('sub_things').push({name: 'Sub thing'}); 
+0

Хм, это работает, но не соответствует атрибуту 'id' на' sub_thing'. В итоге я получаю следующее: {subthings: {: {name: 'Sub thing'}}}. Это похоже на проблемы, когда я хочу обновить/удалить его. Я думаю, что это связано с тем, что 'childRef.child ('sub_things'). Push ({name: 'Sub thing'});' работает, но 'childRef.child ('sub_things'). Push();' doesnt –

+0

Вы можете сделать «var newRef = childRef.child» («sub_things»). Push(); », а затем« newRef.set ({name: «Sub thing»}); 'если вы не хотите устанавливать данные на то же время, что и вызов 'push'. – Anant

Смежные вопросы