javascript - Mongodb-用户验证失败

标签 javascript mongodb authentication mongoose

我正在学习mongodb,但是我遇到了这堵墙,我不知道如何解决它。请帮忙!它以前工作过,但这次当我发出发布请求时,我在 Postman“用户验证”enter image description here 中收到此错误消息

var mongoose     = require('mongoose');
var Schema       = mongoose.Schema;
var bcrypt      = require('bcrypt-nodejs');


var UserSchema   = new Schema({
  name: String,
  username: { type: String, required: true, index: { unique: true }},
  password: { type: String, required: true, select: false }
});

UserSchema.pre('save', function(next) {
  var user = this;

  if (!user.isModified('password')) return next();

  bcrypt.hash(user.password, null, null, function(err, hash) {
    if (err) return next(err);

    user.password = hash;
    next();
  });
});

UserSchema.methods.comparePassword = function(password) {
  var user = this;

  return bcrypt.compareSync(password, user.password);
};

module.exports = mongoose.model('User', UserSchema);

var express = require('express');
var app = express();
var bodyParser = require("body-parser");
var morgan = require('morgan');
var mongoose = require('mongoose');
var port = process.env.PORT || 8080;
var User = require('./app/models/user');


app.use(bodyParser.urlencoded({extended: true}));
app.use(bodyParser.json());


app.use(function(req,res,next){
  res.setHeader('Acess-control-allow-Origin', '*');
  res.setHeader('Acess-control-Allow-Methods', 'GET, POST');
  res.setHeader('Acess-Control-Allow-Headers', 'X-Requested-With, content-type,\Authorization');
  next();
});

app.use(morgan('dev'));

mongoose.connect('mongodb://localhost:27017/myDatabase');

app.get('/', function(req, res){
  res.send('Welcome to thome page');
});

var apiRouter = express.Router();

apiRouter.use(function(req, res, next){
  console.log('Somebody just came to our app');

  next();
});

apiRouter.get('/', function(req, res){
  res.json({message: 'Hooray! Welcome to our api1'});
});

app.use('/api', apiRouter);

apiRouter.route('/users')

         .post(function(req,res){

           var user = new User();

           user.name = req.body.name;
           user.username = req.body.username;
           user.password = req.body.password;

           user.save(function(err){
             if(err){
               if(err.code == 1000)
                 return res.json({success: false, message: "A user with that username already exists"});
               else
                 return res.send(err);
             }
               res.json({message: "User created"});
           });
         });


app.listen(port);
console.log("Magic happens on port " + port);

最佳答案

我也遇到了 postman 的问题。 然后我决定使用原始数据而不是带有Json(application/json) header 的x-www-form-urlencoded。 根据您的情况,您可以像这样使用它:

{"name" : "Holly", 
"username" : "Hollylawly",
"password" : "supersecret"}

the image for postman req

关于javascript - Mongodb-用户验证失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38193800/

相关文章:

javascript - 使用静态字段为 React 组件创建流类型

mongodb - 我如何使用 like 运算符在 mongodb 中查询

web-services - Java EE 中的 Web 服务身份验证

asp.net-mvc - AuthorizationCodeReceived 事件未触发

javascript - 如果对象不存在,如何不破坏 JavaScript 代码?

javascript - 如何在同一个元素上设置多个属性

javascript - Mongoose 独特的结果

macos - 在 macOS 上连接失败的 mongodb

ruby-on-rails - rails 应用程序 : Links to Devise views route to the home page.

javascript - 为什么 useState 钩子(Hook)在 useEffect() 中使用循环时不更新