2016-07-19 6 views
0

Ich baue Backend mit MEAN-Stack, aber wenn ich versuche Dokument in der db zu aktualisieren, ich erhalte eine Fehlermeldung:Warum wird beim Aktualisieren von MongoDb ein Fehler angezeigt?

topUp = function(name, amount, callback) { 
    User.updateOne(
     { "name" : name }, 
     { $set: { "wallet": amount } }, 
     function(err, results) { 
      console.log(results); 
      callback(); 
     }); 
}; 

Typeerror: User.updateOne ist keine Funktion

Aber z.B. findOne() funktioniert gut:

User.findOne({ 
       name: decoded.name 
      }, function(err, user) { 
       if (err) throw err; 

       i 

f (!user) { 
       return res.status(403).send({success: false, msg: 'Authentication failed. User not found.'}); 
      } else { 
       //res.json({success: true, info: {wallet: user.wallet, userPic: user.userPic}}); 
       topUp(decoded.name, amount, function() { 
        User.close(); 
       }); 
      } 
     }); 

"Benutzer" ist eine Mongo-Modelldatei.

+0

weil 'findOne' eine vordefinierte Funktion ist, aber' updateOne() 'nicht. Es sollte standardmäßig nur einen Datensatz aktualisieren. Sie können 'multi: true' verwenden, um mehrere Datensätze zu aktualisieren. –

+0

@MohitBhardwaj gut, nach Mongo docs UpdateOne() ist auch vordefiniert: [Beweis] (https://docs.mongodb.com/getting-started/node/update/) – boooni

+0

Ich denke, es ist nicht in der Datenbank-Treiber definiert Sie könnten verwenden. Ich denke du verwendest Mongoose und 'updateOne()' ist dort nicht verfügbar. Sie können nicht alle nativen mongodb-Funktionen mit allen Treibern verwenden. –

Antwort

1

Ich denke, es ist nicht in dem Datenbanktreiber definiert, den Sie möglicherweise verwenden. Ich denke, Sie verwenden Mungo und updateOne() ist dort nicht verfügbar. Sie können nicht alle nativen mongodb-Funktionen mit allen Treibern verwenden.

Verwandte Themen