sql >> Database >  >> NoSQL >> MongoDB

Mongoose werkt meerdere documenten bij, werkt niets bij

Na een paar uur proberen uit te zoeken waar de fout zat en waarom de database niet werd bijgewerkt, ontdekte ik dat de database daadwerkelijk werd bijgewerkt. Het probleem was dat ik de update in de mongo-shell aan het controleren was en nadat ik deze via nodejs postverzoek had bijgewerkt, verscheen deze niet als bijgewerkt in de shell. Toen ik echter de labels console.log() deed, werd deze bijgewerkt. Dus ik heb het probleem verder onderzocht en ik kwam erachter dat het probleem niet de mongo-shell was, maar onjuist gebruik van de update van de mongoose-opdracht. Ik miste het callback-argument. Na het toevoegen van de callback-functie werden de gegevens onmiddellijk bijgewerkt in de mongo-shell.

Dus in plaats van te doen:

Label.update({'_id': { $in: post.labelIds }}, {$addToSet: {postIds:req.body.id}}, {multi: true})

Vergeet niet om terugbellen toe te voegen:

Label.update({'_id': { $in: post.labelIds }}, {$addToSet: {postIds:req.body.id}}, {multi: true}, function(err, affected) {
   if(err)
      console.log(err)
   else
      console.log(affected)
      // After successful update, redirect here to another page...

Of zoals het dubbele antwoord suggereert om exec() te draaien:

Label.update({'_id': { $in: post.labelIds }}, {$addToSet: {postIds:req.body.id}}, {multi: true}).exec()



  1. NodeJS - maak veilig verbinding met externe redis-server

  2. Database.yml verwijderen bij gebruik van Mongoid in Rails 3.2

  3. Redis lua wanneer het echt te gebruiken?

  4. Hoe zoek je naar sleutels met een waarde? Haal bijvoorbeeld alle SLEUTELS op waarvan de waarde een of andere waarde is