Я создаю 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 и все это только учусь



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Используйте оператор $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.
Попробуйте console.info(result), чтобы увидеть, как структурирован JSON.
Вот что я получаю: We are live on 8000 { lastErrorObject: { updatedExisting: false, n: 0 }, value: null, ok: 1 } error: null statusCode: 200
Попробуйте следующее,
db.collection('movies').findOneAndUpdate({title:req.body.title},{
$set:{
'Avengers'
}})
Неожиданный маркер , } ?
возможно, я не закрыл его должным образом, проверьте закрытие {в вашем коде
что-то не так с методом set, проверьте его еще раз, если это правильный способ сделать это, закрывая скобки, все хорошо
помог ответ?
Заснул, проверю :)
@HotZellah, это помогло?
req.body.titleне является «объектом». На самом деле это похоже на опечатку, поскольку следующее, что вы имеете в виду - это{ title: 'Avengers' }. Или, наверное,{ title: req.body.title }. Короче говоря, похоже, вы забыли удалить свой тест и добавили переменную не в то место.