正如我在MVC概念RoR中所知道的,我的控制器应该从模型中得到结果,然后处理它并渲染视图,类似于这样:
def index
@movies = Movie.all
if params[:title] || params[:director]
@movies = Movie.search(params)
end
end
现在我有了一个Express服务器,我尝试用MVC的方式,使用PostgreSQL(pgpromise)和jade来构建它。
目前,我有一个控制器文件,代码如下:
//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方式那样。我想事情会是这样的:
//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引起(我不确定),所以我无法实现它,我该怎么办?