[英]need help about node.js router
我对nodejs路由器有一些疑问,这是我的代码:
server.js
var express = require('express');
var bodyParser = require('body-parser');
var morgan = require('morgan');
var config = require('./config');
var mongoose = require('mongoose');
var app = express();
mongoose.connect(config.database, function (err){
// body...
if(err){
console.log(err);
}else{
console.log('database ok')
}
});
app.use(bodyParser.urlencoded({ extend: true }));
app.use(bodyParser.json());
app.use(morgan('dev'));
//call api
var api = require('./app/routes/api')(app, express);
api.use('/api', api);
app.get('/',function(req,res){
res.sendFile(__dirname + '/public/views/index.html')
});
app.listen(config.port, function (err) {
// body...
if (err) {
console.log(err);
}else{
console.log('listen in port ' + config.port)
}
})
api.js
var User = require('../models/user');
var config = require('../../config');
var secretKey = config.secretKey;
module.exports = function(app, express) {
var api = express.Router();
api.post('/daftar', function (req, res) {
var user = new User({
name: req.body.name,
username: req.body.username,
password: req.body.password
});
user.save(function (err) {
if(err){
res.send(err);
return;
}
res.json({ message: 'user telah dibuat'});
});
});
return api;
}
当我尝试使用/ api / daftar url发布内容时,找不到我的问题,但是当我尝试将api.post()
移到server.js时,它可以工作。 我只是将api.post()
更改为app.post()
你能告诉我我做错了吗?
可能的解决方案1
将api.use('/api', api)
更改为app.use('/api', api)
如果那行不通,我将下面的操作方式包括在内
可能的解决方案2
从外观上看,您正在使用express4.x。 试试看。
server.js
var express = require('express');
var bodyParser = require('body-parser');
var morgan = require('morgan');
var config = require('./config');
var mongoose = require('mongoose');
var app = express();
...
var api = require('./app/routes/api')(app); // Don't need to pass express here
app.use('/api', api); // Note the app.use instead of api.use
...
api.js
var User = require('../models/user');
var config = require('../../config');
var secretKey = config.secretKey;
module.exports = function(app) {
// Removed express and changed to app.post
app.post('/daftar', function (req, res) {
var user = new User({
name: req.body.name,
username: req.body.username,
password: req.body.password
});
user.save(function (err) {
if (err) {
console.log(err);
// Set an error status code here
res.status(400).send(err);
}
// I prefer this syntax. More verbose and you can set the HTTP status code
// Could put in directly, but I abstracted the msg to a variable here.
var msg = { message: 'user telah dibuat' };
// 201 means Created
res.status(201).send(msg);
});
});
// Do not need to return anything
}
我很难对此进行测试,但是如果您还有其他问题,请在app.post
块中添加一些console.log()
调用,以确保它被调用。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.