Как обновить значения в mongoDB, используя Express. js и axios - PullRequest
0 голосов
/ 25 марта 2020

Я хочу иметь возможность обновлять определенные c сообщения данных внутри моей mongoDB, используя идентификатор объекта. Я уже создал html форму, где поля заполняются выбранными данными поста. Затем я могу изменить эти значения и отправить данные формы в http://localhost: 5000 / возможность обновления . В моем бэкэнде я жду отправки формы по этому URL. Здесь, где я застрял, я не знаю, как использовать идентификатор, который я послал с ax ios, чтобы обновить конкретный c объект в базе данных.

Вот мой код;

отправка формы axois в vue компонент

axios.post('http://localhost:5000/update-opportunity', {
    id: this.id,
    company_name: this.company_name,
    company_type: this.company_type,
    lines_of_business: this.lines_of_business,
    client_type: this.client_type,
    contract_type: this.contract_type,
    contact_name: this.contact_name,
    contact_number: this.contact_number,
    email_address: this.email_address,
    opportunity_owner: this.opportunity_owner,
    decision_maker: this.decision_maker,
    annual_jobs: this.annual_jobs,
    average_fee: this.average_fee,
    annual_value: this.annual_value,
    next_steps: this.next_steps,
    due_date: this.due_date
})
.then((response) => {
    console.log(response);
    this.$emit('formSubmitted');
})
.catch(function (error) {
    console.log(error);
});

отправка формы бэкэнда

router.post('/update-opportunity', (req, res, next) => {
    const db = getDb();
    db
        .collection('jobs')
        .insertOne({
            company_name: req.body.company_name,
            company_type: req.body.company_type,
            lines_of_business: req.body.lines_of_business,
            client_type: req.body.client_type,
            contract_type: req.body.contract_type,
            contact_name: req.body.contact_name,
            contact_number: req.body.contact_number,
            email_address: req.body.email_address,
            opportunity_owner: req.body.opportunity_owner,
            decision_maker: req.body.decision_maker,
            annual_jobs: req.body.annual_jobs,
            average_fee: req.body.average_fee,
            annual_value: req.body.annual_value,
            next_steps: req.body.next_steps,
            due_date: req.body.due_date,
            date_added: new Date()
        })
        .then(result => {
            res.status(201).send();
            console.log(result);
        })
        .catch(err => {
            console.log(err);
        });
});

getDb () - это просто соединение с моей базой данных

Ответы [ 2 ]

1 голос
/ 25 марта 2020

Другое возможное решение, если вы находитесь в начале вашего проекта, вы можете просто использовать быстрый старт: https://github.com/greathappyforest/Express-Vue-QuickStart

1 голос
/ 25 марта 2020

Вам нужно будет использовать метод «update» в пн go.

В настоящее время пытаюсь добавить запись.

Попробуйте что-то вроде этого

const ObjectID = require('mongodb).ObjectID;

db.collection('jobs').update(
{"_id" : req.body.id},
{$set: {
company_name: new ObjectID(req.body.company_name),
            company_type: req.body.company_type,
            lines_of_business: req.body.lines_of_business,
            client_type: req.body.client_type,
            contract_type: req.body.contract_type,
            contact_name: req.body.contact_name,
            contact_number: req.body.contact_number,
            email_address: req.body.email_address,
            opportunity_owner: req.body.opportunity_owner,
            decision_maker: req.body.decision_maker,
            annual_jobs: req.body.annual_jobs,
            average_fee: req.body.average_fee,
            annual_value: req.body.annual_value,
            next_steps: req.body.next_steps,
            due_date: req.body.due_date,
            date_added: new Date()
}});
...