2016-08-11 3 views
0

Ich habe eine geordnete Liste. Ich möchte einen zu der Liste in der Mitte hinzufügen. Ich sortiere ohne Probleme, aber das Modifizieren scheint ein bisschen schwieriger zu sein. Das Hauptziel ist es, alle Zahlen zu finden, die gleich der gesendeten oder größer sind, und zu aktualisieren. Ich würde sie aktualisieren, wenn ich sie finde, aber ich kann keine Funktion in einer Schleife haben.Aktualisierung Mungo-Set Filialdokument

function updateNumbersAfterArticles(searchableid, number){ 
    var m_searchableid = new ObjectId(searchableid); 
    m_Kbase_data.findOne({_id : m_searchableid}, function(err, kbase_data){ 
    if (kbase_data.Steps.length === 1){ 
     var updated_step = new m_KbaseScript_schema({step: kbase_data.Steps[0].step + 1, description : kbase_data.Steps[0].description, image : kbase_data.Steps[0].image}); 
     m_Kbase_data.update({_id : m_searchableid, 'Step._id' : kbase_data.Steps[0]._id }, 
       {$set: { "Steps.$": updated_step }}, 
       function(err, updateRows){ 
        //if (err) res.status(500); 
        console.log(updateRows); 
       } 
      ); 
     return; 
    } 
    else{ 
     var updated_step2 = []; 
     for (var i = 1; i < kbase_data.Steps.length; i++) { 
      if (kbase_data.Steps[i].step >= number){ 
       console.log("pushed"); 
       updated_step2.push(new m_KbaseScript_schema({step: kbase_data.Steps[i].step + 1, description : kbase_data.Steps[i].description, image : kbase_data.Steps[i].image})); 
      } 
     } 
     console.log(updated_step2); 
     m_Kbase_data.update({_id : m_searchableid, }, 
       {$set: { "Steps.$": updated_step2 }}, 
       function(err, updateRows){ 
        //if (err) res.status(500); 
        console.log(updateRows); 
       } 
      ); 
    } 
}); 

}

Wenn ich es laufen, kann ich all die Schübe sehen. Sie scheinen korrekt zu aktualisieren. Die Datenbank wird jedoch nicht aktualisiert.

Antwort

0

so habe ich es funktioniert. (Ich habe noch nicht mit einem Objekt getestet):

function updateNumbersAfterArticles(searchableid, number){ 
    var m_searchableid = new ObjectId(searchableid); 
    m_Kbase_data.findOne({_id : m_searchableid}, function(err, kbase_data){ 

     if (kbase_data.Steps.length === 1){ 
      var updated_step = new m_KbaseScript_schema({step: kbase_data.Steps[0].step + 1, description : kbase_data.Steps[0].description, image : kbase_data.Steps[0].image}); 
      m_Kbase_data.update({_id : m_searchableid, 'Step._id' : kbase_data.Steps[0]._id }, 
        {$set: { "Steps.$": updated_step }}, 
        function(err, updateRows){ 
         //if (err) res.status(500); 
         console.log(updateRows); 
        } 
       ); 
      return; 
     } 
     else{ 
      var updated_step2 = kbase_data.Steps; 
      for (var i = 1; i < kbase_data.Steps.length; i++) { 
       if (kbase_data.Steps[i].step >= number){ 
        //console.log("pushed"); 
        kbase_data.Steps[i].step = kbase_data.Steps[i].step + 1; 
        kbase_data.markModified('Steps'); 
       } 
      } 
      kbase_data.save(); 


     } 
    }); 
} 
Verwandte Themen