Mongodb用户架构错误
我正试图使用邮递员发送数据通过和创建我的用户。但是我不断地得到一个错误,所以我注释掉了一些真正不需要的代码,现在我得到了这个错误。有人知道我可能做错了什么吗Mongodb用户架构错误,mongodb,express,mean-stack,Mongodb,Express,Mean Stack,我正试图使用邮递员发送数据通过和创建我的用户。但是我不断地得到一个错误,所以我注释掉了一些真正不需要的代码,现在我得到了这个错误。有人知道我可能做错了什么吗 Mongodb已连接,服务器正在端口3000上运行。错误表明您正在将无效参数传递给bcrypt.hash(),即未定义,而不是密码。检查是否定义了req.body.password。错误表明您正在将无效参数传递给bcrypt.hash(),即未定义的,而不是密码。检查是否定义了req.body.password。在addUser函数中捕
Mongodb已连接,服务器正在端口3000上运行。错误表明您正在将无效参数传递给
bcrypt.hash()
,即未定义
,而不是密码。检查是否定义了req.body.password
。错误表明您正在将无效参数传递给bcrypt.hash()
,即未定义的
,而不是密码。检查是否定义了req.body.password
。在addUser函数中捕获newUser.password之前,请确保创建console.log(newUser)。在使用数据启动新的用户模式后,对象不会像您预期的那样出现。或者简单地从您自己的字符串中输入一个salt pass,然后检查它是否工作正常。在addUser函数中捕获newUser.password之前,请确保创建一个console.log(newUser)。在使用数据启动新的用户模式后,对象不会像您预期的那样出现。或者简单地从您自己的字符串中输入一个字符串,然后检查它是否工作正常。如前所述,您在第63行中有错误:
bcrypt.hash(newUser.password,salt,(err,hash=>{
因为变量密码是未定义的。
尝试手动定义它,并确保您编写的代码正确执行
但我强烈建议您仔细查看并使用它生成salt密码
在您的例子中,您可以使用mongoose和bcrypt对这个代码段执行相同的工作
//首先,在模式中将“password”重命名为“clean_password”
user.virtual('clean_password')
.set(function(clean_password) {
this._password = clean_password;
this.password = this.encryptPassword(clean_password);
})
.get(function() {
return this._password;
});
user.methods = {
/**
* Authenticate - check if the passwords are the same
*
* @param {String} plainText
*/
authenticate: function(plainPassword) {
return bcrypt.compareSync(plainPassword, this.password);
},
/**
* Encrypt password
*
* @param {String} password
*/
encryptPassword: function(password) {
if (!password)
return '';
return bcrypt.hashSync(password, 10);
}
};
并通过以下方式进行检查:
var user = {
username: "whateveryouwant",
clean_password: "whateveryouneed"
}
User.create(user, function(err,doc){});
如前所述,您在第63行有错误:
bcrypt.hash(newUser.password,salt,(err,hash=>{
因为变量密码是未定义的。
尝试手动定义它,并确保您编写的代码正确执行
但我强烈建议您仔细查看并使用它生成salt密码
在您的例子中,您可以使用mongoose和bcrypt对这个代码段执行相同的工作
//首先,在模式中将“password”重命名为“clean_password”
user.virtual('clean_password')
.set(function(clean_password) {
this._password = clean_password;
this.password = this.encryptPassword(clean_password);
})
.get(function() {
return this._password;
});
user.methods = {
/**
* Authenticate - check if the passwords are the same
*
* @param {String} plainText
*/
authenticate: function(plainPassword) {
return bcrypt.compareSync(plainPassword, this.password);
},
/**
* Encrypt password
*
* @param {String} password
*/
encryptPassword: function(password) {
if (!password)
return '';
return bcrypt.hashSync(password, 10);
}
};
并通过以下方式进行检查:
var user = {
username: "whateveryouwant",
clean_password: "whateveryouneed"
}
User.create(user, function(err,doc){});
该错误似乎在抱怨user.js中第63行附近的变量未定义。您是否考虑过在该点使用console.log输出每个变量以查看每个变量包含的内容?该错误似乎在抱怨user.js中第63行附近的变量未定义。您是否考虑过使用console.log退出把每个变量放在那个点上,看看每个变量包含什么?