如何从另一条路线调用一个模型

how to call one model from another route

请问我一个问题。我已经尝试了四个多小时来实现它,但它没有用。我正在使用 Nodeexpressmongooseejs 模板 我如何调用模型以从另一个路由文件中获取其中的所有数据。

例如:

我有 Post 模型,post.js filemodel 文件夹中。

我有 index.js routerindex.js 文件在 routes 文件夹中

routes/index.js 文件中 我想在加载主页时获取 Post 模型中的所有 posts 以便我可以在我的 layout file 上显示它们(着陆页)

获取主页并渲染帖子

router.get('/', function(req, res, next) {
  const allposts = Post.find({})
  res.render('index', {
   allposts: allposts
  });
});

我采用这种方法的原因是因为我想在我的布局文件(着陆页)上显示我最新的 post 博客,但是当我在我的布局中包含 posts 索引文件时它说我的 posts 是未定义的,所以我决定采用不同的方法来实现它。 如果您知道我如何完成此操作,请帮助我或我可以用来完成此操作的任何其他方法。

Mongo 查询是异步的。因此,当您 return 响应时, Post.find() 查询尚未完成。您可以使用回调、承诺或 async/await 来控制流程。

// require Post model
const Post = require('../model/post'); 

router.get('/', function(req, res, next) {
    Post.find()
    .then(allposts => {
        res.render('index', {allposts});
    })
    .catch(err => {
        console.log(err);
    })
});