2017-01-31 6 views
0

帆の中では、参照されたテーブルによって行を取得する関数が必要です。結合されたテーブルによる帆のクエリ

Child.find({ parent.age: 30 }) 

またはSQL言語で

ような何か
SELECT child.* FROM child JOIN parent ON child.parent_id = parent.id WHERE parent.age = 30 

これまでのところ、私は3つのステップで作業を行う機能uggly書かれています:

get_children_in_celebration: function(req, res) { 

     // 1. Get parend ids 
     Parent.find({ select: ['id'], age: 30}).exec(function(err_parents, res_parents) { 

     // 2. Collect them to array suitable for next query 
     var parent_ids = []; 
     for(var i = 0; i < res_parents.length; i++) { 
      parent_ids[i] = res_parents[i].id; 
     } 

     // Get their children 
     Child.find({ parent_id: parent_ids }).exec(function(err_children, res_children) { 
      return res.json(res_children); 
     }); 
     }); 
    }, 

に〜5000人の両親最初のクエリが返すのとしたがって一緒にdbのための重い負荷を意味します。帆はより良い解決策を提供しますか?

+0

残念ながら... –

答えて

1

いいえ、セイルは関連付けられたテーブルのフィルタリングをサポートしていません。私は同様の問題を抱えていました。

Model.query("select * from table", function (error, response) {}) 
+0

ユニットテストはどのように行うことができますか? – jing

関連する問題