2015-12-07 3 views
0

, когда я пытаюсь обновить его дозу не откидывать какую-либо ошибку она идет нормально, но когда я не проверить мой datebase ничего я их обновленное ничего не модифицируется Просьба помочьКак обновить массив в MongoDB используя мангуст

this is my db 
{ 
    "_id" : ObjectId("56651f0e4905bd041cad0413"), 
    "creator" : ObjectId("566299dd17990464160ae27a"), 
    "content" : "this is my joke 2", 
    "created" : ISODate("2015-12-07T05:54:22.858Z"), 
    "__v" : 15, 
    "comments" : [ 
     { 
      "posteruserId" : "5665e6867185d87c1e71dbdc", 
      "postedBy" : "lawrence nwoko", 
      "postterscomment" : "good joke", 
      "_id" : ObjectId("56660745f644c2501116acce") 
     }, 
     { 
      "posteruserId" : "5665e6867185d87c1e71dbdc", 
      "postedBy" : "lawrence nwoko", 
      "postterscomment" : "good joke", 
      "_id" : ObjectId("56660b6d33c245c012104fdc") 
     } 
    ] 
} 

это моя схема

var mongoose = require('mongoose'); 

var Schema = mongoose.Schema; 

var JokesSchema = new Schema({ 
    creator: {type: Schema.Types.ObjectId, ref: 'User'}, 
    content: String, 
    created:{type:Date, default: Date.now}, 
    comments: [{ 
     text: String, 
     postedBy: String, 
     posteruserId :String, 
     date: String, 
     postterscomment:String 
    }] 
}) 
module.exports = mongoose.model('Jokes_db', JokesSchema) 

здесь я мой пост Funtion api.post ('/ обновление', функция (Req, Рез) {

//  Joke.findById("56651f0e4905bd041cad0413", function (err, meeting) { 
      Joke.update({_id: "5665e6867185d87c1e71dbdc", 'comments._id' : "56660745f644c2501116acce"}, 
       {'$set': { 
        'comments.$.postterscomment': "working" 
       }}, 

       function(err, numAffected) { 
        if(err){ 
         console.log(err) 
        }else{ 
         res.json(numAffected) 
        } 
       } 
      ); 
     }); 
+0

Вы уверены, что ваша схема верная здесь? если нет, то опубликуйте определенную схему. В основном отметим, что '_id', используемый для основного документа в' .update() ', не совпадает с приведенным здесь документом. Поэтому, если это документ, который вы ожидаете обновить, значение '_id' неверно. Таким образом, '5667e6867185d87c1e71dbdc" 'является значением' comments.postuserId', а не '56671f0e4905bd041cad0413" ', которое фактически является полем' _id' документа. –

+0

Я только что добавил свою схему мангуста, пожалуйста, взгляните на нее –

+0

Но обращаете ли вы внимание на неправильное значение '_id, которое используется, как упоминалось? Казалось бы, это проблема. –

ответ

0

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

api.post('/editecomments', function(req, res) { 
     Joke.update({_id: "56651f0e4905bd041cad0413", 'comments._id' : "56660745f644c2501116acce"}, 
      {'$set': {'comments.$.postterscomment': 'working'}}, 

      function(err, numAffected) { 
       if(err){ 
        console.log(err) 
       }else{ 
        res.json(numAffected) 
       } 
      } 
     ); 
    }); 
Смежные вопросы