node.js - 当我使用猫鼬删除功能时,它们被发送到客户端后无法设置标题
问题描述
当我使用此代码时
activecode.remove(err => {
return res.status(500).json("error message ")
});
得到错误在发送到客户端后无法设置标头
当我删除上面的代码时,它可以正常工作
这是我的代码
async activeUser(req, res, next) {
try {
const code = req.params.code;
const activecode = await ActiveCode.findOne({
code
}).gt("expire", new Date()).populate("user").limit(1).exec();
if (activecode) {
if (activecode.used) {
return res.status(400).json({
message: "از این لینک قبلا استفاده شده است"
})
} else {
activecode.used = true;
activecode.save(err => {
if (err) {
return res.status(500).json({
message: "خطایی در فعال سازی رخ داد"
})
};
});
if (activecode.user) {
activecode.user.isActive = true;
activecode.user.save(err => {
if (err) {
return res.status(500).json({
message: "خطایی در فعال سازی رخ داد"
})
};
});
const user = {
id: activecode.user.id,
name: activecode.user.name,
email: activecode.user.email,
isActive: activecode.user.isActive
}
activecode.remove(err => {
return res.status(500).json("خطایی در فعال سازی اکانت رخ داد ")
});
return res.status(200).json({
user
});
}
}
} else {
return res.status(400).json({
message: "چنین لینکی برای فعال سازی حساب وجود ندارد"
});
}
} catch (err) {
return res.status(500).json({
message: "خطایی در فعال سازی حساب رخ داده لطفا دوباره امتحان کنید"
});
}
}
任何
res.status.json
用于返回我为解决此问题所做的事情。我的代码试图发送多个响应
解决方案
更改这部分代码:
activecode.remove(err => {
return res.status(500).json("خطایی در فعال سازی اکانت رخ داد ")
});
return res.status(200).json({
user
});
和
activecode.remove((err, data) => {
if (err) {
return res.status(500).json("خطایی در فعال سازی اکانت رخ داد ");
} else {
return res.status(200).json({user});
}
});
这里的问题是您的请求尝试发送两次响应,这是不允许的。
希望这可以帮助 :)
推荐阅读
- javascript - 用数组替换模板中的字符串
- javascript - 在 Nodejs 中读取 API 数据并创建对象
- sockets - 用于报废机械师的 Lua 套接字
- apache - 如何解决 Apache 代理错误 502(从远程服务器读取错误)
- linux - 找不到满足要求 tensorflow==1.15.3 的版本(来自 ludwig)
- wordpress - 无法将域指向正确的 Droplet
- css - 如何引用内部类?
- python - 搁置文档中引用的 Python 中的“递归数据类型”是什么?
- javascript - Increment HTML ID Based On Class Javascript
- pandas - pandas 的 df.take() 和 df.iloc[] 有什么区别?