检查Mongoose Model集合中是否存在文档

时间:2020-06-22 22:34:32

标签: javascript node.js mongoose

我要检查“用户”集合中是否已存在电子邮件:

我有这个模型:

const isEmailExists = async (value) => {
    const res = await User.countDocuments({ email: value });
    return res > 0;
}

const User = mongoose.model('User', {
    email: {
        type: String,
        required: true,
        validate(value) {
            isEmailExists(value).then(res => {
                if (res) {
                    throw new Error('Email already exists');
                }
            })
        }
    }
});

我在快速路由器上使用了post方法:

router
    .route('/register')
    .get((req, res) => {
        res.sendFile(publicDirPath + '/auth/register.html');
    })
    .post(async (req, res) => {
        const user = new User(req.body);
        try {
            const saveUser = await user.save();
            res.send(saveUser);
        } catch (error) {
            res.send(error);
        }
    });

由于某种原因,它不起作用,并且无论如何都已添加了用户。

我在做什么错了?

1 个答案:

答案 0 :(得分:0)

如果要检查是否存在具有特定条目/值的文档,可以执行以下操作:

function emailExists(value) {
    User.findOne({email: value}).then((err, user) => !!user)
}
相关问题