Я разрешил повторяющуюся ошибку, и этот маршрут добавит объект эпизода в массив эпизодов, но я не решил, как проверить запрос не только для документа ObjectId, но и для также внутри массива эпизодов, и убедитесь, что нет совпадений в сезоне и номере episode_number, которые совпадают с тем, который я добавляю в req.body.Обновление mongoose, которое будет проверять для тех же полей перед добавлением
Это мой маршрут
router.put('/api/shows/:id/episodes/add', function(req, res){
var setObject = req.body;
setObject.episode_id = new mongoose.Types.ObjectId;
Show.update({'_id':req.params.id}, {$push:{'episodes':setObject}}, function(err, doc){
if(err){console.log(err)}
else{res.json(doc)};
})
})
Это мой документ базы данных
{
"_id" : ObjectId("58190ebffa6503f8d9e114cc"),
"title" : "Designated Survivor",
"poster" : "https://images-na.ssl-images-amazon.com/images/M/[email protected]_V1_.jpg",
"rated" : "TV-14",
"program_time" : 60,
"network" : "ABC",
"airs_on" : [
"Wednesday"
],
"streams_on" : [
"123Movies",
"Hulu Plus"
],
"genre" : [
"Drama"
],
"users" : [ ],
"episodes" : [
{
"_id":ObjectId('#############'),
"season_number" : 1,
"episode_number" : 1,
"title" : "Pilot",
"watched" : true
},
{
"season_number" : 1,
"episode_number" : 2,
"title" : "The First Day",
"watched" : true
},
{
"season_number" : 1,
"episode_number" : 3,
"title" : "The Confession",
"watched" : true
},
{
"season_number" : 1,
"episode_number" : 4,
"title" : "The Enemy",
"watched" : true
},
{
"season_number" : 1,
"episode_number" : 5,
"title" : "The Mission",
"watched" : true
},
{
"season_number" : 1,
"episode_number" : 6,
"title" : "The Interrogation",
"watched" : false
}
]
}
Это вызов, я использую в почтальона
https://temp-crud-app-rawlejuglal.c9users.io/tv/api/shows/58190ebffa6503f8d9e114cc/episodes/add
-->body
title 'The Traitor'
watched false
season_number 1
episode_number 7
Я попытался { '_id': новый Mongoid (req.params.id)} и ниже вариант, ObjectId = require ('mongodb') ObjectID; ObjectId ("34234234234234234234") Но у меня все еще такая же ошибка –
router.put ('/ api/shows /: id/episodes/add', function (req, res) { var query = { $ and: [{'_ id': req.params.id}, {'episodes': {$ elemMatch: {'season_number': req.body.season_number, 'episode_number': {$ gt: req .body.episode_number-1, $ lt: req.body.episode_number + 1}} }}]} TV.find (запрос, {}, {}, функция (ERR, результаты) { , если (ERR) {console.log (ERR)} еще {res.json (результаты) }; }) }) –
Скажите, пожалуйста, что вы получаете в console.log (результат) –