【问题标题】:Uable to post to mongo db无法发布到 mongodb
【发布时间】:2018-12-16 23:48:59
【问题描述】:

嘿,伙计们,我是 MEAN 堆栈的新手,我正在尝试使用 Postman 发出发布请求,但它会抛出错误 username not defined.. 与 mongodb 的连接已成功完成并且工作正常,但它提示用户未定义标识符用户名.username 我无法调试错误。我也尝试使用浏览器发送发布请求,但没有帮助。

代码:

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');
});

【问题讨论】:

    标签: node.js mongodb express mean-stack


    【解决方案1】:

    定义“用户”的更新代码

    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()。 我用你的代码做到了这一点,从三个输入字段提交了文本,并且能够在我的集合“用户”中获得一个文档。

    【讨论】:

      【解决方案2】:
      var user = new User({
        username: req.body.username,
          password: req.body.password,
          email: req.body.email,
      });
      

      这对你有用。

      【讨论】:

      • 感谢代码...现在它不会抛出任何错误,但集合仍然是空的
      • 不要忘记将对象保存为 user.save()
      • 我发现问题出在邮递员身上......终于让我工作了,谢谢
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-06-13
      • 2011-12-07
      • 2015-02-02
      相关资源
      最近更新 更多