Поставить функцию в NodeJS, чтобы манипулировать MongoDB не работает - PullRequest
0 голосов
/ 18 мая 2018

Кто-нибудь знает, как реализовать функцию put в NodeJS для управления коллекцией MongoDB?

Я видел много людей, использующих app.get или app.post для использования db.collection.updateOne(), но я не могу поверить, что это правильный способ сделать это.

К сожалению, когда я использую app.put, я не получаю сообщение об ошибке, но в моей коллекции ничего не изменилось.Данные все те же.

Пожалуйста, смотрите мой код ниже:

  app.put('/user/:id', (req, res) => {
    const id = req.params.id;
    const details= {'_id' : new Object(id)};
    const user = {username: req.body.username, password: req.body.password};

    db.collection('users').findOneAndUpdate(details,{$set: user},{new: true}, function (err, item) {
        if (err) {
            res.send({'error':'An error has occured'});
        } else {
            res.send(user)
        }
    });
});

1 Ответ

0 голосов
/ 18 мая 2018

Ошибка заключалась в том, что я определил идентификатор как объект, а не как идентификатор объекта.Поскольку MongoDB является чувствительным к типу, он не обнаружил, что идентификатор "помещает".

Поэтому вместо:

const details= {'_id' : new Object(id)};

Это должно быть:

const details= {'_id' : new ObjectID(id)};
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...