MongoError: параметр фильтра должен быть объектом

Я создаю api для отдыха. У меня есть конечная точка для Post / Movies: тело запроса должно содержать только заголовок фильма, и его наличие должно быть подтверждено. На основе переданного заголовка другие сведения о фильме должны быть извлечены из thememoviedb и сохранены в базе данных приложения.

app.post('/movies', (req, res) => {
        request('https://api.themoviedb.org/3/discover/movie?callback=JSONP_CALLBACK&sort_by=popularity.desc&api_key=2931998c3a80d7806199320f76d65298', function (error, response, body) {
            console.info('error:', error); // Print the error if one occurred and handle it
            console.info('statusCode:', response && response.statusCode); // Print the response status code if a response was received

          });
        db.collection('movies').findOneAndUpdate(req.body.title,{
            title: 'Avengers',
        },(err, result) => {
            if (err) {
                res.send({
                    'error': 'An error has occured'
                });
            } else {
                res.send(result.ops[0]);
            }
        });
});

когда я запускаю приложение, я получаю эту ошибку, что я здесь делаю не так? я новичок в nodejs и все это только учусь

req.body.title не является «объектом». На самом деле это похоже на опечатку, поскольку следующее, что вы имеете в виду - это { title: 'Avengers' }. Или, наверное, { title: req.body.title }. Короче говоря, похоже, вы забыли удалить свой тест и добавили переменную не в то место.
Neil Lunn 14.06.2018 15:26
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
1
8 814
2

Ответы 2

Используйте оператор $eq в объекте фильтра $eq

{ <field>: { $eq: <value> } }

Таким образом, окончательный фрагмент будет таким:

app.post('/movies', (req, res) => {

    /* code ... */

    let { title } = req.body

    db.collection('movies').findOneAndUpdate({ title: { $eq: title } }, { title: 'Avengers' }, (err, result) => {
        if (err) {
            res.send({ 'error': 'An error has occured' });
        } else {
            res.send(result.ops[0]);
        }
    });

});

когда я запускаю localhost: 8000 / movies, я получаю ошибку в консоли TypeError: Cannot read property '0 of undefined, in postman, could not get any response.

Hot Zellah 15.06.2018 00:08

Попробуйте console.info(result), чтобы увидеть, как структурирован JSON.

Adam Azad 15.06.2018 00:32

Вот что я получаю: We are live on 8000 { lastErrorObject: { updatedExisting: false, n: 0 }, value: null, ok: 1 } error: null statusCode: 200

Hot Zellah 15.06.2018 02:03

Попробуйте следующее,

db.collection('movies').findOneAndUpdate({title:req.body.title},{
          $set:{
           'Avengers'
          }})

Неожиданный маркер , } ?

Hot Zellah 16.06.2018 08:19

возможно, я не закрыл его должным образом, проверьте закрытие {в вашем коде

Sajeetharan 16.06.2018 08:19

что-то не так с методом set, проверьте его еще раз, если это правильный способ сделать это, закрывая скобки, все хорошо

Hot Zellah 16.06.2018 08:26
github.com/freespiritdev/Media/blob/…
Sajeetharan 16.06.2018 08:36

помог ответ?

Sajeetharan 16.06.2018 13:29

Заснул, проверю :)

Hot Zellah 16.06.2018 13:30

@HotZellah, это помогло?

Sajeetharan 12.10.2018 08:48

Другие вопросы по теме