你没有申报
role
在您的
Model.create()
函数,因此它将始终默认为的无效值
user
.
你可以尝试只使用可选的链接,所以如果
角色
是post请求的一部分,它将使用它,否则它将使用默认值,如下所示:
const newUser = await User.create({
role: req.body?.role || 'user'
name: req.body.name,
email: req.body.email,
password: req.body.password,
passwordConfirm: req.body.passwordConfirm
});
或者,您也可以使用
req.body.admin
将要执行的任务
undefined
如果不是发布请求的一部分。因此,mongoose将使用您的默认值,如下所示:
const newUser = await User.create({
role: req.body.role //< will be undefined if not there
name: req.body.name,
email: req.body.email,
password: req.body.password,
passwordConfirm: req.body.passwordConfirm
});
您仍然会得到验证,因为如果
req.body.admin
值不是的一部分
enum
数组mongoose将抛出一个验证错误。