现在将路由移动到自己的文件夹中我无法解析响应正文。控制器正确发送正文。当路由在服务器js文件中时,应用程序正常工作。
Server.js BEFORE
var express = require('express');
var app = express();
var routes = require('./routes/routes.js');
app.use('/',routes);
app.use(express.static(__dirname + '/public'));
app.use('/bootstrap', express.static(__dirname + '/public/bower_components/bootstrap/dist'));
app.use('/jquery', express.static(__dirname + '/public/bower_components/jquery/dist'));
app.use('/angular', express.static(__dirname + '/public/bower_components/angular'));
app.use('/controllers', express.static(__dirname + '/public/controllers'));
Routes.js
var express = require('express');
var app = express();
var bodyParser = require('body-parser');
var ObjectId = require('mongojs').ObjectID;
var mongojs = require('mongojs');
var db = mongojs('contactlist',['contactlist'])
var router = express.Router();
app.use(bodyParser.json());
router.put('/contactlist/:id',function(req,res){
console.log("req.body.name");//gives undefined
db.contactlist.findAndModify({
query:{_id: ObjectId(req.params.id)},
update:{ $set:{name:req.body.name,email:req.body.email,number:req.body.number}},
new: true},
function(err,doc){
res.json(doc);
});
});
module.exports = router;
另外,有什么想法为什么我必须在这里附加routes.js而不仅仅是/ routes?
var routes = require('./routes/routes.js');
文件夹结构
-App
node_mods/
public/
index.html
controllers/
resources/
routes/
routes.js
Server.js AFTER
var express = require('express');
var app = express();
var bodyParser = require('body-parser');
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({
extended: true
}));
var routes = require('./routes/routes.js');
app.use('/',routes);
app.use(express.static(__dirname + '/public')); //look for static files js html css etc
app.use('/bootstrap', express.static(__dirname + '/public/bower_components/bootstrap/dist'));
app.use('/jquery', express.static(__dirname + '/public/bower_components/jquery/dist'));
app.use('/angular', express.static(__dirname + '/public/bower_components/angular'));
app.use('/controllers', express.static(__dirname + '/public/controllers'));
app.listen(3000);
console.log('server running on port 3000');
答案 0 :(得分:0)
在你的路线被召唤之后你的身体正在解析。
一般在主服务器文件中传递body-parser
代码,在所有路由之前都是server.js
。
像这样:
var app = express();
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({
extended: false
}));
答案 1 :(得分:0)
至于你的(第二个?)队列,关于导入需要routes.js:
当你这样做时
var routes = require('./routes/routes.js');
你没有打电话给路线。你实际上需要一个模块。这不仅是路由数据,还包括路由器对象Behavior,包括所有路由的相关中间件。
如果仔细观察,你的router.js会导出路由器" object" (或功能,根据需要调用)。因此,当您需要它时,您将获得整个包,而不仅仅是数据