Невозможно обновить данные на основе идентификатора, используя экспресс + монго + узел

Я совершенно новичок в node/express/mongo. Я пытаюсь учиться, но одна ошибка заканчивает мой день. Не знаю почему. Много гуглил, так и не нашел подходящего решения. Ниже приведен мой код из pastebin, где вы можете найти мой код.

https://pastebin.com/kZLHAA5k

У меня постоянно возникает следующая ошибка, хотя я получаю параметр id из URL-адреса, используя objectID для монго. Не могли бы вы помочь мне здесь...

Error: 
Error: Argument passed in must be a single String of 12 bytes or a string of 24 hex characters
at new ObjectID (c:\Users\AD LORD\Desktop\learning-node\node_modules\bson\lib\bson\objectid.js:50:11)
at ObjectID (c:\Users\AD LORD\Desktop\learning-node\node_modules\bson\lib\bson\objectid.js:31:42)
at app.get (c:\Users\AD LORD\Desktop\learning-node\server.js:35:44)
at Layer.handle [as handle_request] (c:\Users\AD LORD\Desktop\learning-node\node_modules\express\lib\router\layer.js:95:5)
at next (c:\Users\AD LORD\Desktop\learning-node\node_modules\express\lib\router\route.js:137:13)
at Route.dispatch (c:\Users\AD LORD\Desktop\learning-node\node_modules\express\lib\router\route.js:112:3)
at Layer.handle [as handle_request] (c:\Users\AD LORD\Desktop\learning-node\node_modules\express\lib\router\layer.js:95:5)
at c:\Users\AD LORD\Desktop\learning-node\node_modules\express\lib\router\index.js:281:22
at param (c:\Users\AD LORD\Desktop\learning-node\node_modules\express\lib\router\index.js:354:14)
at param (c:\Users\AD LORD\Desktop\learning-node\node_modules\express\lib\router\index.js:365:14)

person Adnan Shawkat    schedule 30.04.2017    source источник


Ответы (1)


Поскольку я не получил никакого ответа, мне каким-то образом удалось решить проблему. Кажется, мой параметр не был установлен должным образом, из-за чего возникла ошибка, поэтому я обновил свой маршрут, как показано ниже:

// update quote
app.post( '/update/edits', ( req, res ) => {
    db.collection('quote').update (
        { _id: ObjectId(req.body.quoteID) },
        { $set: {
            name: req.body.name,
            quote: req.body.quote
            }
        }, function (err, result) {
            if (err) {
                req.flash('error', err);
            } else {
                req.flash('success', 'Quote updated successfully');
            }
            res.redirect('/');
     });
});

Кстати, вы можете проверить готовую CRUD-систему в моем github, если она поможет кому-то еще.

Простые котировки — базовая система CRUD

person Adnan Shawkat    schedule 30.04.2017