Ошибка при сохранении документов с использованием mon goose в узле express. js project - PullRequest
0 голосов
/ 12 июля 2020

Я получаю сообщение об ошибке даже после сохранения документа в mongodb с использованием mon goose в узле express. js project.

Вот мой код:

exports.storeJob = async (req, res, next) => {
    const { name, email, password, title, location, descriptionUrl, tags, company, companyLogo, coupon, showLogo, highlightWithColor, customColor, makeSticky } = req.body;

    const { error } = userRegisterValidation(req.body);
    if (error) return res.status(400).json({ success: false, message: error.details[0].message });

    const emailExists = await User.findOne({ email: email });
    if (emailExists) return res.status(400).json({ success: false, message: "User already exits. Please Login" });

    const salt = await bcrypt.genSalt(10);
    const hashPassword = await bcrypt.hash(password, salt);

    const user = new User({
        name: name,
        email: email,
        password: hashPassword
    });
    
    // try{
        const savedUser = await user.save();

        const job = new Job({
            title,
            location,
            descriptionUrl,
            tags,
            company,
            companyLogo,
            coupon,
            showLogo,
            highlightWithColor,
            customColor,
            makeSticky,
            status: 'open',
            user: savedUser
        });
        try {
            const createdJob = await job.save();
            // try {
                user.jobs.push(createdJob);
                user.save();

            res.status(201).json({ success: true, data: savedUser });                
            // } catch {
            //     res.status(400).json({ success: false, message: "Some error occured" });
            // }
        } catch (err) {
            res.status(400).json({ success: false, message: "Error while creating job.", error: err });
        }
    // } catch(err) {
    //    res.status(400).json({ success: false, message: "Error while creating user" });
    // }
}

I есть 2 вопроса:

  1. У меня есть метод регистрации в userController. Есть ли способ использовать этот метод внутри метода storeJob?
  2. В приведенном выше коде даже после сохранения пользователя и задания в базе данных и их связывания ответ api:
{ success: false, message: "Error while creating job.", error: {} }

1 Ответ

1 голос
/ 12 июля 2020
                user.jobs.push(createdJob);
                user.save();

В этом случае эти две строки создают нового пользователя, потому что пользователь определяет схему User.

Вместо этих двух строк попробуйте эту

    var push = {
        jobs:createdJob
    }
    var update = {
        "$addToSet":push
    }
    await User.findOneAndUpdate({ "_id": savedUser._id },update).exec();

Надеюсь, это будет работать нормально для вас. Спасибо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...