在app.get路由语句期间Express3到Express4收到错误

时间:2015-07-20 20:56:12

标签: mongodb express mongoose

我正在通过Mongoose进行App开发。作者在他的书中使用了Express 3,但使用Express 4应该是一件容易的事情。我不断收到app.get方法错误(app.js第29行)。它应该根据快递4网站的文档工作。错误说需要回调函数但得到一个[对象]。用户的路径文件是

var mongoose = require('mongoose');
var User = mongoose.model('User');

// GET user creation form
exports.create = function(req, res) {
    res.render('user-form', {
        title: "Create user",
        buttonText: "Join!"
    });
};

和app.js中的第29行说

app.get('/user', user);

我使用了快速生成器附带的标准版本,只是将其更改为与我的文件名一致。

我哪里出错?

2 个答案:

答案 0 :(得分:0)

您传递给get的用户不是函数,而是对象。由于你没有发布整个代码,我无法确切地说出错误,但这应该会给你一个想法:

var userController = function(req, res) {
    res.render('user-form', {
        title: "Create user",
        buttonText: "Join!"
    });
};

app.get('/user', userController);

根据代码,您可以按照以下方式进行操作。

<强> user.js的

var mongoose = require('mongoose');
var User = mongoose.model('User');

// GET user creation form
module.exports.userController = function(req, res) {
    res.render('user-form', {
        title: "Create user",
        buttonText: "Join!"
    });
};

<强>路由器

var user = require('./user.js'); 
app.get('/user', user.userController);

答案 1 :(得分:0)

  

Express 4是Express 3的重大变化。

因此,您需要在路线文件中更改内容:

`

var express = require('express');
var router = express.Router();
var mongoose = require('mongoose');
var User = mongoose.model('User');

router.get('/', function(req, res, next) {
    res.render('user-form', {
        title: "Create user",
        buttonText: "Join!"
    });

module.exports = router;

`

app.use('/user', user);

更多信息:http://expressjs.com/guide/migrating-4.html 并且有很多快速4个教程,所以使用一个。