2017-01-17 6 views
0

У меня возникли проблемы с простыми запросами EmberFire. Я хочу найти объект отдела по имени, а затем добавить его в отделы колледжа в соответствии с моделью данных, описанной ниже.Newbie Emberfire Querying

Ошибка я получаю это:

TypeError: Cannot read property 'pushObject' of undefined

Что я делаю неправильно?

   store.query('college', {orderBy: 'name', equalTo: "CAS"}).then(function(c){ 
       var college = c 
       console.log(college); 
       dept.set('college',college); 
       college.get('departments').pushObject(dept); 
       dept.save(); 
       college.save() 

      } 
     ) 

Где отдел:

store.query('department', {orderBy: 'name', equalTo: "Testing One"}).then(function(depts){ 
       // var dept = depts.get('content')[0] 
       var dept = depts}) 

Вот мой полный запрос:

findOne(){ 
     var store = this.store 
     // store.query('department', {orderBy: 'name', equalTo: "Testing One"}).then(function(depts){ 
     store.query('department', {orderBy: 'name', equalTo: "Testing One"}).then(function(depts){ 
      // var dept = depts.get('content')[0] 
      var dept = depts 
      console.log(dept); 
      //Add it to college 
      store.query('college', {orderBy: 'name', equalTo: "CAS"}).then(function(c){ 
       var college = c//.get('content')[0] 
       console.log(college); 
       dept.set('college',college); 
       college.get('departments').pushObject(dept); 
       dept.save(); 
       college.save() 

      } 
     ) 
     }) 
}, 

Факультет:

export default DS.Model.extend({ 
    name: DS.attr('string'), 
    faculty:DS.hasMany('faculty'), 
    college: DS.belongsTo('college') 
}); 

Колледж:

import DS from 'ember-data'; 

export default DS.Model.extend({ 
    name: DS.attr('string'), 
    departments: DS.hasMany('department') 
}); 

EDIT: объекнтыми из запроса:

Class 
__ember1484688357664 
: 
"ember632" 
__ember_meta__ 
: 
Meta 
__firebaseCleanup 
: 
() 
_super 
: 
ROOT() 
_updatingPromise 
: 
null 
content 
: 
(...) 
get content 
: 
GETTER_FUNCTION() 
set content 
: 
SETTER_FUNCTION(value) 
isLoaded 
: 
true 
isUpdating 
: 
false 
links 
: 
EmptyObject 
manager 
: 
Class 
meta 
: 
EmptyObject 
query 
: 
Object 
store 
: 
Class 
type 
: 
[email protected]:college: 
__proto__ 
: 
Class 
+0

Вы уверены, что «c» возвращает объект из запроса? Сначала вы должны это проверить. console.log (c) затем проверьте, печатается ли на консоли. Возможно, мне не хватает отделов. – talves

+0

@talves, пожалуйста, проверьте обновленный ответ. Я напечатал 'c'. Это тип колледжа. Я предполагаю, что у него должен быть пустой массив отделов, если с ним не связаны? –

+0

Извините, вы можете попробовать console.log (college.get ('department')), он должен быть неопределенным. Возможно, вы имели в виду college.get ('department') единственное число. – talves

ответ

1

Вы должны попробовать что-то похожее на следующее: ответ

store.query('department', {orderBy: 'name', equalTo: "Testing One"}).then(function(c) { 
    return c.get('firstObject'); 
}).then(function(college) { 
    departments = college.get('departments'); 
    departments.pushObject(dept); 
    ... 
}); 
+0

Конечно, вам нужно будет проверить возврат null. – talves

+0

Он работает. Огромное спасибо. Где я могу узнать больше о запросе данных с emberfire? –

+0

Обычно я использую документы или просматриваю проекты с открытым исходным кодом, но есть и учебные пособия. Я также видел несколько презентаций на youtube. Рад, что это сработало для вас. :) – talves

0

talves будет работать в большинстве случаев, но это немного некрасиво. Это общепринятый способ решить эту проблему, поскольку EmberFire не предлагает ничего лучшего. Это, однако, дополнение, которое будет работать для всех ваших запросов. Вы можете проверить это here.

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

  • Нет связанных вопросов^_^