【发布时间】:2018-11-05 23:41:08
【问题描述】:
这几天我遇到了麻烦。我正在学习 MEAN 堆栈,但是在使用 mongoose 模式在 mongo 上创建用户期间,我遇到了这个问题:
(node:93337) UnhandledPromiseRejectionWarning: ValidationError: User validation failed: username: Path
usernameis required., password: Pathpasswordis required., email: Path
这是我的代码:
服务器部分:
mongoose.connect('mongodb://localhost:27017/Wisebatt', err => {
if (err) {
console.log(`Not connected to db ${err}`)
} else {
console.log('Successfully connected to db')
}
})
...
app.post('/register', (req, res) => {
const user = new User();
user.username = req.body.username;
user.password = req.body.password;
user.email = req.body.email;
user.save();
res.send('User created');
});
用户架构:
const mongoose = require('mongoose');
const Schema = mongoose.Schema;
const UserSchema = new Schema({
username: { type: String, required: true, unique: true},
password: { type: String, required: true },
email: { type: String, required: true, unique: true},
});
module.exports = mongoose.model('User', UserSchema);
这是我正在使用的附加组件:
- 快递,
- Nodemon,
- 摩根,
- 正文解析器,
- Mongo(运行 mongod 和 Mongoose)
【问题讨论】:
-
你能把你在服务器上设置数据库(mongodb)的部分贴出来吗?我猜你没有正确的凭据或数据库。
-
当然,这里是:
mongoose.connect('mongodb://localhost:27017/Wisebatt', (err) => { if(err){ console.log(`Not connected to db ${err}`); } else { console.log('Successfully connected to db'); } }); -
您没有设置用户名/密码来使用您当前的 DSN 连接到 MongoDB
-
你能控制日志 req.body.username 吗?它可能是未定义的。
-
如果
req.body未定义,那么问题可能(很可能)出在您未能显示的客户端代码中 - 请显示您的客户端代码
标签: javascript node.js express mongoose mongoose-schema