【问题标题】:Trouble passing mongoose variables to pug template through express通过 express 将 mongoose 变量传递给 pug 模板时遇到问题
【发布时间】:2018-07-26 21:15:37
【问题描述】:

我有一个通过 Mongoose 的用户模型,我正在尝试创建一个简单的 CRUD API,从用户部分开始,问题是我的“索引”和“创建”路由似乎正在工作,但详细信息页面似乎不会接受传递给它的变量,并且我无法在页面上呈现内容。

我的用户模式现在非常简单,只是为了让 API 正常工作 (./models/user.js)

const userSchema = new Schema({
  name: {
    type: String,
    maxlength: 50,
    minlength: 2,
    trim: true
  }
})

可以工作的路由的控制器如下所示 (./controllers/user_controller.js)

exports.index = function(req, res, next) {
  User.find({}, (err, users) => {
    res.render('userindex', {users: users})
  })
}

exports.new = function(req, res, next) {
  newUser = new User({ name: req.body.name })
  newUser.save((err, user) => {
    if (err) res.send(err)
    res.redirect('/users')
  })
}

exports.addUser = function(req, res, next) {
  res.render('newuser')
}

到目前为止,路由看起来像这样 (./routes/userRouter.js) 我确实认识到 add 和 new 的路线是相反的,它会被修复。

userRouter.get('/', userController.index)

userRouter.get('/new', userController.addUser)

userRouter.post('/add', userController.new)

userRouter.get('/:id', userController.detail)

唯一剩下的是坏掉的控制器:(./controllers/user_controller.js)

exports.detail = function(req, res, next) {
  User.find({'_id': req.params.id}, (err, user) => {
    if (err) res.send(err)

    res.render('userdetail', {user: user})
  })
}

以及似乎不会接收数据的模板。 (./views/userdetail.pug)

p #{user.name}

【问题讨论】:

    标签: node.js mongodb express mongoose pug


    【解决方案1】:

    Find 返回一个数组,因此没有模板用户。将集合中的第一项模板化:

    res.render('userdetail', {user: user[0]})
    

    或改用 .findOne。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-03-28
      • 2021-08-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多