【发布时间】:2016-07-23 14:06:29
【问题描述】:
我有一个mongolab(mlab) 的帐户。我正在尝试使用来自 chrome 浏览器的 postman 附加组件为用户发布数据。我总是收到错误。我无法发布数据。我尝试过其他不同的方法。但没有运气。
有人帮我解决这个问题吗?
这是我的api.js:
var
User = require('../models/user'),
config = require('../../config'),
secretKey = config.secretKey;
module.exports = function( app, express ) {
var api = express.Router();
api.post('/signup', 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 has been Created!'});
});
});
api.get('/users', function(req, res) {
User.find({}, function( req, users){
if(err) {
res.send(err);
return;
}
res.json(users);
})
});
return api;
}
config.js:
module.exports = {
"database":"mongodb://xxx:xxxx@ds015700.mlab.com:15700/arifstory",
"port" : process.env.PORT || 3000,
"secretKey" : "YourSecretKey"
}
还有user.js:
var
mongoose = require('mongoose'),
Schema = mongoose.Schema,
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);
我真的无法理解这里的问题。请任何人帮助我?
错误
{
"message": "User validation failed",
"name": "ValidationError",
"errors": {
"userName": {
"message": "Path `userName` is required.",
"name": "ValidatorError",
"properties": {
"type": "required",
"message": "Path `{PATH}` is required.",
"path": "userName"
},
"kind": "required",
"path": "userName"
},
"password": {
"message": "Path `password` is required.",
"name": "ValidatorError",
"properties": {
"type": "required",
"message": "Path `{PATH}` is required.",
"path": "password"
},
"kind": "required",
"path": "password"
}
}
}
【问题讨论】:
-
他们是否有任何具体的错误消息,我从未使用 chrome 扩展程序添加数据,所以这听起来很愚蠢。
-
@GandalftheWhite - 请查看我收到的
error的更新 -
@3gwebtrain 在你的架构中你有
userName但你在 api.js 中设置username -
@war1oc - 我的建议是正确的。仍然有问题。 (同样的错误)
-
您能显示您从邮递员那里发布的内容(表单数据)吗?你也可以在 api.post 注册方法中显示
console.log(req.body)吗?