2017-01-17 11 views
0

私は簡単なEmberFireクエリに問題があります。 名前で部門オブジェクトを探し、それを以下に説明するデータモデルに従って大学の部門に追加したいと思います。初心者Emberfireクエリ

私が受けていますエラーは次のとおりです。

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:クエリからCオブジェクト:

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( 'departments'))を試してみるとよいでしょう。それは未定義です。たぶんあなたは大学を意味するかもしれません.get( 'department')singular。 – 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