几天后我遇到了麻烦。我正在学习MEAN堆栈,但是在使用mongoose模式在mongo上创建用户时,我遇到了这个问题:
(node:93337)UnhandledPromiseRejectionWarning:ValidationError:用户验证失败:用户名:路径
username
是必需的。密码:路径password
是必需的。,电子邮件:路径
这是我的代码:
服务器部分:
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');
});
UserSchema:
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);
以下是我正在使用的附加组件:
答案 0 :(得分:1)
尝试在路线之前将其添加到您的快速代码中。这是一个中间件,它会在您向后端发送请求时设置req.body对象。 (你还需要npm install --save body-parser)
const bodyParser = require('body-parser')
app.use(bodyParser.urlencoded({ extended: true }))
app.use(bodyParser.json())
如果您使用的是休息客户端。确保您有一个请求标题,例如:
Content-Type: application/x-www-form-urlencoded
答案 1 :(得分:0)
好的,我发现了问题...
显然,问题是由于这两个中的一个:
惊喜,我和Postman一起尝试过,请求成功了。所以所有代码都很棒,问题来自两个中的一个。
所以,这让我了解了一件事。如果它不是你的代码,那就是你正在使用的软件可以摧毁你所做的一切
答案 2 :(得分:0)
如果您使用的是expressJS,请确保必须添加此行。
const express = require('express');
const app = express();
app.use(express.json());
app.use(express.urlencoded({ extended: true }));
特别是这个
app.use(express.urlencoded({ extended: true }));
这实际上解决了我的问题。