2016-10-26 1 views
0

私はsails.jsを初めて使用しています。シンプルなWebアプリケーションを作成することで習得しようとしているときに問題が発生しました。私のアプリはクラス管理についてです。私のモデルは、3つのテーブル:学生、コース、リストを持っています。学生テーブルは学生に関する情報を保存し、コースはコースに関する情報を保存します。 list.tableは、どの生徒がコースに入っているか、そのマーク、このクラスに欠けている日についての情報を保存します。私はres.view()を使用し、1つの配列を必要とする任意のビューで機能しました。私は2モデルからの情報を必要とする機能記述しようとすると、しかし、:学生そしてもちろん、res.view()didntのヘルプ(または私はそれを正しく行うには知らない)セイルズで表示する2つの配列を送信

あり
module.exports = { 
    'new': function(req, res, next) { 
    Course.find(function foundCourses (err, courses) { 
    if (err) return next(err); 
    res.view({courses: courses}); 
    }); 
    /* Student.find(function foundStudents (err, students) { 
    if (err) return next(err); 
    res.view({ 
     students: students 
    }); 
    }); */ 
    }, 
    //more other code here 
}; 

を、私は両方を送信したいです配列を表示するが、私は方法を知らない。 Sails.jsは、私がそれを好きならば、ただ一つの配列を送ることができます。私を助けてください 。大いに感謝する!

答えて

0

res.viewを2回呼び出すことはできません。最初にすべてのデータを収集し、それを送信して表示する必要があります。

2方法:

module.exports = { 
    'new': function(req, res, next) { 
     var foundCourses = function (err, courses) { 
      if (err) return next(err); 
      Student.find(function foundStudents (err, students) { 
       if (err) return next(err); 
       res.view({ 
        courses: courses, 
        students: students 
       }); 
      }); 
     }); 

     Course.find(foundCourses); 
    }, 
    //more other code here 
}; 

またはあなたがasync.parallel

module.exports = { 
    'new': function(req, res, next) { 
     var dataCallback = function (err, data) { 
      if (err) return next(err); 
      var courses = data[0]; 
      var students = data[1]; 
      res.view({ 
       courses: courses, 
       students: students 
      }); 
     }; 

     async.parallel([ 
      function(callback) { 
       Course.find(callback); 
      }, 
      function(callback) { 
       Student.find(callback); 
      } 
     ],dataCallback); 
    }, 
}; 
+0

を使用することができますあなたにたくさんありがとうございました。私は自分自身でこれを学ぼうとしており、これは私のチーズなミスの一つです:D –

関連する問題