2016-01-04 2 views
0

Я пытаюсь отредактировать массив внутри объекта в приложении Express/NodeJS. Ниже данные из коллекции Locations:NodeJS/MongoDB Обновить массив в объекте

{ _id"56873fc9182b3741059357d0", 
    longitude: 113.83507800000007, 
    latitude: 22.1533884, 
    location: "Hong Kong", 
    name"Hong Kong", 
    __v0, 
reviews: {review_id: "OBY3iC1IcdIE", comment: null, rating: null } 
      {review_id: "3433iC1IcdIY", comment: null, rating: null } 
} 

Я хотел бы изменить одну из обзоров (например: review_id: «OBY3iC1IcdIE»), но с моей стороны сервера код делает сбой приложения. Мой текущий стороне сервера код:

exports.editReview = function(req, res) { 
    Location.update({ _id: req.params.location_id, reviews.review_id: req.params.review_id }, 
    { $set: { review.comment: req.body.comment, 
review.rating: req.body.rating }}, function(err, location) { 
     if(err)  
     res.send(err); 
     res.json(location); 
    }); 
}; 
+0

{$ набор: { "reviews.comment": req.body.comment, "review.rating": req.body.rating}}. Когда вам понадобятся вложенные поля, вам нужно использовать двойные кавычки. –

ответ

2
exports.editReview = function(req, res) { 
    Location.update({ _id: req.params.location_id, "reviews.review_id": req.params.review_id }, 
    { $set: { "reviews.comment": req.body.comment, 
"reviews.rating": req.body.rating }}, function(err, location) { 
     if(err)  
     res.send(err); 
     res.json(location); 
    }); 
}; 

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

+0

. Я просто добавил этот код и получил сообщение Mongo Error с сообщением «не могу использовать деталь (отзывы отзывов.com), чтобы пересечь элемент». –

+0

Я только что исправил код, и он работает. С вашей помощью я добавил $ sign для «обзоров. $. Comment» и «review. $. Rating» в соответствии с документацией MongoDb. –

0

Я должен сказать спасибо @SumanLama за помощь. Я добавил необходимые знаки $ в соответствии с документацией MongoDB.

exports.editReview = function(req, res) { 
    Location.update({ _id: req.params.location_id, "reviews.review_id": req.params.review_id }, 
    { $set: { "reviews.$.comment": req.body.comment, 
     "reviews.$.rating": req.body.rating }}, function(err, location) { 
     if(err)  
      res.send(err); 
     res.json(location); 
}); 
};