我正在通过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);
我使用了快速生成器附带的标准版本,只是将其更改为与我的文件名一致。
我哪里出错?
答案 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个教程,所以使用一个。