无法 post 到 mongo db
Uable to post to mongo db
大家好,我是 MEAN 堆栈的新手,我正在尝试使用 Postman 发出 post 请求,但它抛出错误 username not defined.. 与 mongodb 的连接已成功完成,并且工作正常但它提示未定义的标识符用户名 user.username 我无法调试错误。我也尝试使用浏览器发出 post 请求,但没有帮助。
代码:
user.js
var mongoose = require('mongoose');
var schema = mongoose.Schema;
var UserSchema = new schema({
username : {type:String,lowercase:true,required:true,unique:true},
password : {type:String,required:true},
email : {type:String,required:true,unique:true}
});
module.exports = mongoose.model('User',UserSchema);
index.js(server.js)
//Variables------------------------------
var express = require('express');
var app = express();
var port = process.env.PORT || 8080;
var morgan = require('morgan');
var mongoose = require('mongoose');
var User = require('./app/models/user');
var bodyParser = require('body-parser');
//---------------------------------------
//Configuration--------------------------
app.use(bodyParser.urlencoded({ extended: true })); // for parsing
application/x-www-form-
app.use(bodyParser.json()); // for parsing application/json
app.use(morgan('dev'));
mongoose.connect('mongodb://localhost:27017/development',function(err){
if(err){
console.log('Not connected '+err);
}else{
console.log('Connected to db');
}
});
//----------------------------------------
//Routes----------------------------
app.get('/', function(req, res) {
res.send('Hello World with a post number'+port);
});
app.get('/home',function(req,res){
res.send('Hello from home');
});
app.post('/users',function(req,res){
var user = new User();
//res.send('This is working'+user);
user.username=req.body.username;
user.password=req.body.password;
user.email =req.body.email;
//user.save()
res.send("username "+user.username);
res.send("password"+user.password);
res.send("email"+user.email);
res.send('User Registered!!!');
});
//-----------------------------------
app.listen(port,function(){
console.log('Running the server');
});
var user = new User({
username: req.body.username,
password: req.body.password,
email: req.body.email,
});
这对你有用。
定义 'User'
的更新代码
var user = new User({
username: req.body.username,
password: req.body.password,
email: req.body.email,
});
req.body.email
.
后不应该有逗号
您也应该得到错误:
Error [ERR_HTTP_HEADERS_SENT]: Cannot set headers after they are sent to the client
在控制台中,因为 app.post()
中有多个 res.send
行;只用一个。
正如 Sandeep 提到的,不要忘记取消注释 user.save()
。
我用你的代码做到了这一点,从三个输入字段提交了文本,并且能够在我的 collection 'users.'
中获得一个文档
大家好,我是 MEAN 堆栈的新手,我正在尝试使用 Postman 发出 post 请求,但它抛出错误 username not defined.. 与 mongodb 的连接已成功完成,并且工作正常但它提示未定义的标识符用户名 user.username 我无法调试错误。我也尝试使用浏览器发出 post 请求,但没有帮助。
代码:
user.js
var mongoose = require('mongoose');
var schema = mongoose.Schema;
var UserSchema = new schema({
username : {type:String,lowercase:true,required:true,unique:true},
password : {type:String,required:true},
email : {type:String,required:true,unique:true}
});
module.exports = mongoose.model('User',UserSchema);
index.js(server.js)
//Variables------------------------------
var express = require('express');
var app = express();
var port = process.env.PORT || 8080;
var morgan = require('morgan');
var mongoose = require('mongoose');
var User = require('./app/models/user');
var bodyParser = require('body-parser');
//---------------------------------------
//Configuration--------------------------
app.use(bodyParser.urlencoded({ extended: true })); // for parsing
application/x-www-form-
app.use(bodyParser.json()); // for parsing application/json
app.use(morgan('dev'));
mongoose.connect('mongodb://localhost:27017/development',function(err){
if(err){
console.log('Not connected '+err);
}else{
console.log('Connected to db');
}
});
//----------------------------------------
//Routes----------------------------
app.get('/', function(req, res) {
res.send('Hello World with a post number'+port);
});
app.get('/home',function(req,res){
res.send('Hello from home');
});
app.post('/users',function(req,res){
var user = new User();
//res.send('This is working'+user);
user.username=req.body.username;
user.password=req.body.password;
user.email =req.body.email;
//user.save()
res.send("username "+user.username);
res.send("password"+user.password);
res.send("email"+user.email);
res.send('User Registered!!!');
});
//-----------------------------------
app.listen(port,function(){
console.log('Running the server');
});
var user = new User({
username: req.body.username,
password: req.body.password,
email: req.body.email,
});
这对你有用。
定义 'User'
的更新代码var user = new User({
username: req.body.username,
password: req.body.password,
email: req.body.email,
});
req.body.email
.
您也应该得到错误:
Error [ERR_HTTP_HEADERS_SENT]: Cannot set headers after they are sent to the client
在控制台中,因为 app.post()
中有多个 res.send
行;只用一个。
正如 Sandeep 提到的,不要忘记取消注释 user.save()
。
我用你的代码做到了这一点,从三个输入字段提交了文本,并且能够在我的 collection 'users.'