首页 > 解决方案 > 如何从另一条路线调用一个模型

问题描述

请问我有一个问题。我已经尝试实施这个超过四个小时,但它没有奏效。我正在使用Nodeexpress和模板 如何调用模型以从另一个路由文件中获取其中的所有数据mongooseejs

例如:

我有Post模型,并且post.js filemodel文件夹内。

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

routes/index.js文件内部我想在加载主页时获取所有posts内部模型,以便我可以在我的(登陆页面)上显示它们Postlayout file

获取主页并提交帖子

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

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

标签: node.jsexpressejs

解决方案


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

// 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);
    })
});

推荐阅读