我有一个路由'/login',它有一个控制器来验证用户是否有效。目前,我只是验证从路由参数输入的密码是否等于我在数据库中存储的密码。
我有几种方法可以帮助我完成这项工作。 1. findUser() - 验证用户是否输入了必填字段,并在找到数据时解析Mongoose对象。 2. ValidatePassword() - 它链接到findUser()并将mongoose对象转换为JS对象。
在validatePassword方法中,我想删除不需要的字段(如密码)然后再将数据发送给客户端。因此,我将mongoose对象转换为javascript对象并执行删除操作。
问题:每当我将其转换为JS对象时,都会出现“toObject()未定义”的错误。附上上述控制器方法的片段。请建议任何更改!
这个方法检索用户详细信息,我将其链接在validatePassword()中。
链接:
我有几种方法可以帮助我完成这项工作。 1. findUser() - 验证用户是否输入了必填字段,并在找到数据时解析Mongoose对象。 2. ValidatePassword() - 它链接到findUser()并将mongoose对象转换为JS对象。
在validatePassword方法中,我想删除不需要的字段(如密码)然后再将数据发送给客户端。因此,我将mongoose对象转换为javascript对象并执行删除操作。
问题:每当我将其转换为JS对象时,都会出现“toObject()未定义”的错误。附上上述控制器方法的片段。请建议任何更改!
let findUser = (req, res) => {
return new Promise((resolve, reject) => {
if (req.body.email) {
userModel.find({ email: req.body.email }, (error, userDetails) => {
if (error) {
let response = apiResponse.generate(
true,
"Unable to reach out to server",
500,
null
);
reject(response);
} else if (checkLib.isEmpty(userDetails)) {
let response = apiResponse.generate(
true,
"Unable to reach out to server",
500,
null
);
reject(response);
} else {
resolve(userDetails);
}
});
} else {
let response = apiResponse.generate(
true,
"Please provide emailID and password",
404,
null
);
reject(response);
}
});
};
这个方法检索用户详细信息,我将其链接在validatePassword()中。
let validatePassword = (retrievedUserDetails) => {
return new Promise((resolve, reject) => {
console.log("passw:" + retrievedUserDetails);
if (req.body.password) {
console.log(retrievedUserDetails.password);
console.log(req.body.password);
if (retrievedUserDetails[0].password != req.body.password) {
let response = apiResponse.generate(
true,
"Password or email is invalid",
404,
null
);
reject(response);
} else {
let retrievedUserDetailsObj = retrievedUserDetails.toObject();
delete retrievedUserDetailsObj.password;
let response = apiResponse.generate(
false,
"Signed in successfully",
200,
retrievedUserDetails
);
resolve(response);
}
} else {
let response = apiResponse.generate(
true,
"Please provide password",
404,
null
);
reject(response);
}
});
}
链接:
findUser(req, res)
.then(validatePassword)
.then((resolve) => {
let response = apiResponse.generate(
false,
"user is signed in successfully",
200,
resolve
);
res.send(response);
})
.catch((err) => {
console.log(err);
res.send(err);
});
};