[英]How to pass variable by reference in javascript? Read data from ActiveX function which returns more than one value
[英]how to retrieve and pass data from more than 1 Schema in a function
我是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');
}
}
問題是,從兩者中檢索數據然后將其傳遞給視圖的編碼將是什么樣的?
您可以使用Promise.all() ,獲取兩個貓鼬調用數據,然后進行渲染。
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] });
});
注意,我在回調內部進行渲染,這是因為貓鼬調用是異步的。 否則,您將在查詢完成之前進行渲染。
等同於:
Category.find({}, (err, catData) => {
Tags.find({}, (err, tagsData) => {
res.render('/blog/blogForm', { categories: catsData, tags: tagsData });
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.