簡體   English   中英

如何從一個函數中的多個模式中檢索和傳遞數據

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM