更新 mongoose 中的 `let` 变量 schema.save
Updating `let` variable in mongoose schema.save
我有一些这样的代码:
let addUser = (req, res) => {
let user;
let message = "";
let status = 200;
bcrypt.hash(password, salt_rounds, (err, hash) => {
user = new user({
...
password: hash,
});
user.save(err => {
if(err) {
message = "No success";
status = 400;
} else {
message = "success";
}
});
res.status(status).json({
message: message,
});
});
};
但是,message
变量在发送响应时未定义。我已经搜索了一段时间,不幸的是,没能找到与此问题类似的解决方案。
最终,我希望能够在 bcrypt
/.save
闭包中更新消息、状态等变量。我曾尝试使用回调和解决承诺,我认为由于天真而无法正常工作。无论如何,我们将不胜感激!
注意:我不想使用任何其他库来解决这个问题(我真的怀疑首先需要它)
提前致谢!
将 user.save
更改为 returns Promise,然后对该 Promise 调用 .then
:
let addUser = (req, res) => {
let user;
let status = 200;
bcrypt.hash(password, salt_rounds, (err, hash) => {
user = new user({
password: hash,
});
const savePromise = new Promise((resolve, reject) => {
user.save(err => {
if (err) {
status = 400;
reject("No success");
} else {
resolve("success");
}
});
});
savePromise.then(message =>
res.status(status).json({ message })
).catch(message =>
res.status(status).json({ message })
);
});
};
试试这个,将 message
键放在 双引号中
let addUser = (req, res) => {
let user;
let message = "";
let status = 200;
bcrypt.hash(password, salt_rounds, (err, hash) => {
user = new user({
...
password: hash,
});
user.save(err => {
if(err) {
message = "No success";
status = 400;
} else {
message = "success";
}
});
res.status(status).json({
"message": message,
});
});
};
我有一些这样的代码:
let addUser = (req, res) => {
let user;
let message = "";
let status = 200;
bcrypt.hash(password, salt_rounds, (err, hash) => {
user = new user({
...
password: hash,
});
user.save(err => {
if(err) {
message = "No success";
status = 400;
} else {
message = "success";
}
});
res.status(status).json({
message: message,
});
});
};
但是,message
变量在发送响应时未定义。我已经搜索了一段时间,不幸的是,没能找到与此问题类似的解决方案。
最终,我希望能够在 bcrypt
/.save
闭包中更新消息、状态等变量。我曾尝试使用回调和解决承诺,我认为由于天真而无法正常工作。无论如何,我们将不胜感激!
注意:我不想使用任何其他库来解决这个问题(我真的怀疑首先需要它)
提前致谢!
将 user.save
更改为 returns Promise,然后对该 Promise 调用 .then
:
let addUser = (req, res) => {
let user;
let status = 200;
bcrypt.hash(password, salt_rounds, (err, hash) => {
user = new user({
password: hash,
});
const savePromise = new Promise((resolve, reject) => {
user.save(err => {
if (err) {
status = 400;
reject("No success");
} else {
resolve("success");
}
});
});
savePromise.then(message =>
res.status(status).json({ message })
).catch(message =>
res.status(status).json({ message })
);
});
};
试试这个,将 message
键放在 双引号中
let addUser = (req, res) => {
let user;
let message = "";
let status = 200;
bcrypt.hash(password, salt_rounds, (err, hash) => {
user = new user({
...
password: hash,
});
user.save(err => {
if(err) {
message = "No success";
status = 400;
} else {
message = "success";
}
});
res.status(status).json({
"message": message,
});
});
};