MVC の概念である RoR で知っているように、コントローラーはモデルから結果を取得し、それを処理してビューをレンダリングする必要があります。次のようになります。
def index
@movies = Movie.all
if params[:title] || params[:director]
@movies = Movie.search(params)
end
end
現在、Express サーバーがあり、PostgreSQL(pg-promise) と jade を使用して MVC 方式で構築しようとしています。
現在、次のようなコードを含むコントローラー ファイルがあります。
//Get home page
var router = express.Router();
router.get('/', function(req, res, next) {
Movies.all(res);
});
私のモデルでは、それを処理する all 関数があります。
exports.all = function(res){
var result = db.query('select * from movies').
then(function (data) {
// success;
res.render('index',{title: 'Rotten Mango', movies: data} );
})
.catch(function (error) {
// error;
console.log('error !')
});
};
しかし、私がやりたいことは、通常の RoR または典型的な MVC の方法で行ったように、Movies.all のデータベース クエリの結果をコントローラーに返すことです。私は何かが次のようになると想像します:
//Get home page
var router = express.Router();
router.get('/', function(req, res, next) {
// This code will return the JSON result and render into the view page
res.render('index', Movies.all );
});
しかし、これは約束を返すか、Asyncによって引き起こされるため(よくわかりません)、それを実現することはできません。どうすればよいですか?