2016-07-05 65 views
1

我正在學習mongodb,但我正在跑到這面牆,我不知道如何修復它。請幫忙!它工作過,但是這一次,當我做POST請求我得到了郵差「用戶驗證」此錯誤消息enter image description hereMongodb - 用戶驗證失敗

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); 
+0

這是貓鼬,對不對?您可能希望在您的問題中更清楚一點。 – HexCoder

+0

是的,它是貓鼬。 – spaceDog

+0

[Express js表單數據]的可能重複(http://stackoverflow.com/questions/24800511/express-js-form-data)。我想你會發現這會消除你的煩惱。 –

回答

1

我有這個問題太郵遞員。 然後我決定用raw數據代替x-www-form-urlencodedJson(application/json)頭。 你的情況,你可以使用它像這樣:

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

the image for postman req

+0

感謝您的回答,我嘗試使用原始數據,但仍然有相同的錯誤消息。 – spaceDog

0

我固定通過重新安裝郵遞員。

謝謝你們花時間回答這個問題。

謝謝。