猫鼬保存方法似乎不起作用

Mongoose save method seems to not be working

我正在尝试创建一个 REST API。我对后端很陌生,暂时只是自己练习。对于我的代码,我知道存储纯文本密码是不好的做法,但同样,这完全是为了练习,永远不会上线。后面我也会加上加密练习。

我的问题是我不确定为什么我的 API 不起作用。我看到它失败的地方,当我尝试保存用户时它在 catch 块中失败但是我没有收到任何错误来告诉我到底出了什么问题,除了我强制执行一次。我在这个网站上有另一部分遵循几乎完全相同的逻辑并且它工作得很好但是对于这个它没有。我不知道如何解决我的问题,但在谷歌搜索后我仍然无法弄清楚。它看起来对我来说也很好,但如前所述,我对后端还很陌生。

这是我的控制器函数:

const signup = async (req, res, next) => {
    const errors = validationResult(req); 
    if (!errors.isEmpty()) {
        return next(new HttpError('Invalid inputs passed, please check your data', 422));
    }

    const { name, email, password, places } = req.body;

    let existingUser;
    try {
        existingUser = await User.findOne({email: email}) // finds one document matching our criteria we set
    } catch(err) {
        const error = new HttpError('Signing up failed, please try again later', 500);
        return next(error);
    }
    
    if (existingUser) {
        const error = new HttpError('User exists already, please login instead', 422);
        return next(error);
    }

    const createdUser = new User({
        name,
        email,
        image: 'https://images.pexels.com/photos/220453/pexels-photo-220453.jpeg?auto=compress&cs=tinysrgb&dpr=3&h=750&w=1260',
        password,
        places
    });
    
    try {
        await createdUser.save();
    } catch(err) {
        const error = new HttpError(
            'Signing up failed', 500
        );
        return next(error);
    }

    res.status(201).json({user: createdUser.toObject({ getters:true })});

};

我使用 Postman 将包含所有正确信息的请求发送到我的 API 端点。根据我收到的回复,它在 await createdUser.save()

的 try catch 块中失败

对于从 google 找到此内容的任何人,这是我的解决方案:

首先,我建议您将其添加到您的保存方法中以尝试诊断问题

await createdUser.save(function(err){
            if(err){
                console.log(err);
                return;
            }
        });

这对我帮助很大,因为它为我提供了有关如何解决的更多信息 it.It 原来我的问题是因为我在架构中拼错了一个字段。非常简单的解决方案!