首页 > 解决方案 > 当我使用猫鼬删除功能时,它们被发送到客户端后无法设置标题

问题描述

当我使用此代码时

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 用于返回我为解决此问题所做的事情。我的代码试图发送多个响应

标签: node.jsexpressmongooseheaderpopulate

解决方案


更改这部分代码:

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});
    }
});

这里的问题是您的请求尝试发送两次响应,这是不允许的。

希望这可以帮助 :)


推荐阅读