2016-12-03 6 views
0

это мой Colletion:метеоритный метод обновления не работает

{ 
    "_id" : "Kan6btPXwNiF84j8e", 
    "title" : "Chapter Title 1", 
    "businessId" : "qmWJ3HtZrpka8dpbM", 
    "createdBy" : "GfdPfoPTiSwLv8TBR", 
    "sections" : [ 
     { 
      "id" : "T5KAfTcCb7pCudT3a", 
      "type" : "TEXT", 
      "data" : { 
       "text" : "<h1>2</h1><h1>asd</h1>" 
      }, 
      "createdAt" : ISODate("2016-12-03T10:35:59.023Z"), 
      "updatedAt" : ISODate("2016-12-03T10:35:59.023Z") 
     } 
    ], 
    "createdAt" : ISODate("2016-12-02T12:15:16.577Z"), 
    "updatedAt" : ISODate("2016-12-03T12:54:50.591Z") 
} 

это метод метеора я звоню со стороны клиента

deleteSection: function (section_id, chapter_id) { 


     chaptersCollection.update(
      {$and: [{_id: chapter_id}, {'sections.id': section_id}]}, 
      {$pull: {'sections': {'id': section_id}}}, 
      function (err, numAffected) { 
       if (err) { 
        console.log(err); 
        return err; 
       }else{ 
        console.log(numAffected); 
       } 
      }); 
     return 'Section Successfully Deleted'; 
    } 

в функцию обратного вызова метода метеора, она возвращает 1, как влияет строк. Но на сервере документ не обновляется.

Любое предложение, где я ошибаюсь?

ответ

0

Вам действительно нужны $ и?

deleteSection: function (section_id, chapter_id) { 
    chaptersCollection.update(
     {_id: chapter_id, 'sections.id': section_id}, 
     {$pull: {'sections': {'id': section_id}}}, 
     function (err) { 
      if (err) { 
       console.log(err); 
       return err; 
      }else{ 
       console.log('success'); 
       return 'success'; 
      } 
     }); 
} 
+0

это не имеет значения, я старался не работает @HafizAllyLalani –

0

У меня была аналогичная проблема, когда я пытался использовать тягу в проекте. Поэтому вместо использования $ pull я обработал массив вне базы данных, а затем задал массив как тот, который я обрабатывал снаружи. Так что, может быть, вы можете попробовать что-то подобное, что в качестве альтернативного способа

deleteSection: function (section_id, chapter_id){ 

    const oldArray = chaptersCollection.findOne(chapter_id).sections; 
    const newArray = oldArray.filter(function(section) { 
         return section.id !== section_id 
         }); 

    chaptersCollection.update({_id: chapter_id}, 
           {$set: {sections: newArray}}, 
           function (err, numAffected) { 
            if (err) { 
             console.log(err); 
             return err; 
            }else{ 
             console.log(numAffected); 
            } 
           }); 
    return 'Section Successfully Deleted'; 

} 
+0

это альтернативный способ добиться того, что я хочу, не решить эту проблему. Спасибо за ответ. @CagriYardimci –