gpt4 book ai didi

node.js - MongoDB 保存用户时电子邮件和密码无效

转载 作者:太空宇宙 更新时间:2023-11-04 01:47:27 25 4
gpt4 key购买 nike

有一个问题一直困扰着我,当我尝试创建新用户时,出现以下错误:

ValidationError:用户验证失败:0.password:路径0.password是必需的。,0.email:路径0.email是必需的。

现在端点曾经可以工作,我认为它与数据库本身有关,但我一生都无法弄清楚该怎么做。

我当然传递了有效数据。

这是模型和有效负载:

import mongoose from 'mongoose';
import BaseSchema from '../utils/schema';
import bcrypt from 'bcrypt';

const userSchema = BaseSchema({
email:{
type:String,
required:true,
unique:true,
trim: true,
lowercase:true
},
password:{
type:String,
required:true
},
firstName:String,
lastName:String
});
userSchema.virtual('name').get(function(){
return `${this.firstName} ${this.lastName}`;
});

userSchema.pre('save', function(next) {
bcrypt.hash(this.password, 10, (err, hash) => {
if (err) {
return next(err);
}
this.password = hash;
next();
});
});

const User = mongoose.model('User', userSchema);
export default User;

要保存的有效负载(这是在保存之前调试的)是:

{ email: 'somevalidemail@gmail.com',
password:
'$2b$10$oQN7i5AKYDyPLp.DefeRjuyh9Z7JLayPjTO4I3B6NvytM0vq2YnVG',
firstName: 'Cool',
lastName: 'Cat' }

有人可以帮忙吗?

最佳答案

我认为你失去了“这个”上下文。

userSchema.pre('save', function(next) {
var user = this;

// generate a salt
bcrypt.genSalt(10, function(err, salt) {
if (err) return next(err);

// hash the password using our new salt
bcrypt.hash(user.password, salt, function(err, hash) {
if (err) return next(err);

// override the cleartext password with the hashed one
user.password = hash;
next();
});
});
});

关于node.js - MongoDB 保存用户时电子邮件和密码无效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50922648/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com