我在expressjs中的新手,并想知道如何从我的控制器中的多个架构中检索和传递数据。
就是这样,假装我想打开add_new_blog页面,下面是 路由器;
router.get('/add_new_blog', BlogController.index);
然后在BlogController.index中我需要检索类别和标签模型。
const Category = require('models/categorySchema');
const Tag = require('models/tagSchema');
module.exports = {
index(req, res, next){
Category.find({});
Tag.find({});
// how to find/retrieve data from both Schema then i pass them to Views.
res.render('/blog/blogForm');
}
}
问题是从两者中检索数据然后将其传递给视图的编码是什么样的?
答案 0 :(得分:2)
您可以使用Promise.all(),获取两个mongoose调用数据,然后进行渲染。
const categoryFind = Category.find({}).exec(); // exec() returns a Promise.
const tagsFind = Tags.find({}).exec();
Promise.all(categoryFind, tagsFind).then((values) => {
res.render('/blog/blogForm', { categories: values[0], tags: values[1] });
});
请注意,我在回调中渲染,这是因为mongoose调用是异步的。否则,您将在查询完成之前进行渲染。
这与:
相同Category.find({}, (err, catData) => {
Tags.find({}, (err, tagsData) => {
res.render('/blog/blogForm', { categories: catsData, tags: tagsData });
}
}