2016-12-20 17 views
0

でサブ文書IDによるクエリ私は以下のようになります。これは、サブ文書を持つ文書を持っているしたいと思います:ループバック:ループバック

course: { 
    id, 
    name, 
    sections: { 
    section: { 
     id, 
     name 
    } 
    } 
} 

どのように私はループバックでこのモデルを作成するのですか? 私はサブ文書としてモデル化したいので、sectionのために別のモデルを作成したくありません。

さらに、サブ文書IDからサブ文書を取得する方法についていくつかの情報を提供してください。

たとえば、id = 2のセクションについて詳しく知りたい場合は、コースの詳細を取り上げてセクションの詳細を提供するべきではありません。

+0

すべてはあなたが 'section'モデルとセットアップ' course'と 'section'の間にいくつかの関係を作成する条件の下で、ループバックと簡単です。別のモデルを作成したくない理由を詳細に注意してください。 – Overdrivr

+0

@Overdrivr、私はコースに関連するセクションを取得するためにデータベースを複数回クエリする必要があるためです。データベースを結合するオーバーヘッドは、それを避けるために、私はサブ文書としてセクションをモデル化しようとしています。 –

+1

それは非常に早い "最適化"だと思いませんか?そして実際にアプリケーションの後半でボトルネックとなるデータベースが見つかった場合は、常に分散/シャーディングなどのよりスマートな方法を使用することができます – Overdrivr

答えて

0

embedded modelsを使用できます。

Course.jsonの設定例は、CourseembedsManySectionの関係です。

Courseに埋め込まれているため、Sectionモデルは他の場所に宣言する必要はありません。

その後
{ 
    "name": "Course", 
    "base": "PersistedModel", 
    "idInjection": true, 
    "properties": { 
    "name": { 
     "type": "string" 
    } 
    }, 
    "relations": { 
    "emails": { 
     "type": "embedsMany", 
     "model": "Section", 
     "property": "name", 
     "options": { 
     "forceId": true, 
     } 
    } 
... 
} 

、最初に生成された電子メールのプロパティを使用し、その後のコースのインスタンスを見つけ、プログラムでコースに電子メールアドレスを追加します。ここでも、あなたがやりたいthis is documented

var id = 0; 
Course.findById(id, function(err,course) { 
    course.emails.add({name: '[email protected]'}, function(err, ..) { 
    //... 
    } 
} 
+0

モデルの作成方法とクエリ方法に関する情報を提供できますか? 次のようにしてコースモデルを作成したとします。Course.create(courseObj); メールアドレスを作成してコースに追加するにはどうすればよいですか? –

+0

いくつかのコードを追加しました – Overdrivr