2016-12-20 2 views
1

Hallo, ich bin Anfänger in mittleren Stapel, und ich möchte einen Datensatz aktualisieren mit updateUpdate-Funktion funktioniert nicht in MEAN Stapel node.js und Winkel js mit

Funktion I Rekord tat speichern erfolgreich, aber Update-Funktion funktioniert nicht .

Ich möchte ein bestimmtes Objekt Bässe auf der ID aktualisieren. Aber es funktioniert nicht.

ich diese Funktion bin mit dem Datensatz in Knoten js Datei

module.exports.useredit = function (req, res) 
    { 
     var user = new Usermodel(); 
     user = req.body.dataToModify; 
     console.log(user); 
     user.update({ _id:user._id },user); 
    }; 

wenn ich console.log(user); Aktualisierungsdaten wie diese

{ _id: '5846692617e0575c0e0c2211', 
    password: 123456, 
    email: '[email protected]', 
    name: 'shahjad232324324324', 
    __v: 0 } 

aber die Daten nicht aktualisieren zeigen verwenden zu aktualisieren. Fehlermeldung zeigt, wenn ich verwendet

user.update({ _id:user._id },user); 

Fehler ist

user.update is not a function</h1>↵<h2></h2>↵<pre>TypeError: user.update is not a function↵ at module.exports.useredit (C:\Users\Ahmad\ticket\controller\usercontroller.js:102:10)↵ at Layer.handle [as handle_request] (C:\Users\Ahmad\ticket\node_modules\express\lib\router\layer.js:95:5)↵ at next (C:\Users\Ahmad\ticket\node_modules\express\lib\router\route.js:131:13)↵ at Route.dispatch (C:\Users\Ahmad\ticket\node_modules\express\lib\router\route.js:112:3)↵ at Layer.handle [as handle_request] (C:\Users\Ahmad\ticket\node_modules\express\lib\router\layer.js:95:5)↵ at C:\Users\Ahmad\ticket\node_modules\express\lib\router\index.js:277:22↵ at Function.process_params (C:\Users\Ahmad\ticket\node_modules\express\lib\router\index.js:330:12)↵ at next (C:\Users\Ahmad\ticket\node_modules\express\lib\router\index.js:271:10)↵ at Function.handle (C:\Users\Ahmad\ticket\node_modules\express\lib\router\index.js:176:3)↵ at router (C:\Users\Ahmad\ticket\node_modules\express\lib\router\index.js:46:12)↵ at Layer.handle [as handle_request] (C:\Users\Ahmad\ticket\node_modules\express\lib\router\layer.js:95:5)↵ at trim_prefix (C:\Users\Ahmad\ticket\node_modules\express\lib\router\index.js:312:13)↵ at C:\Users\Ahmad\ticket\node_modules\express\lib\router\index.js:280:7↵ at Function.process_params (C:\Users\Ahmad\ticket\node_modules\express\lib\router\index.js:330:12)↵ at next (C:\Users\Ahmad\ticket\node_modules\express\lib\router\index.js:271:10)↵ at C:\Users\Ahmad\ticket\node_modules\express\lib\router\index.js:618:15</pre>↵" 

, wie es resloved und wie Daten in mongodb zu aktualisieren.

Antwort

1

Try this:

module.exports.useredit = function (req, res){ var id = req.params.id, body = req.body, options = { upsert: true, new : true } mongoDB.User.findOneAndUpdate({_id:id)}, body, options, function(err, user) { if(err){res.json(err)}else{res.json(user)} } }

Hinweis, mongoDB.user.findOneAndUpdate, die "mongoDB" ist generisch. Dies ist Ihr Referenzname für Ihr MongoDB-Schema, wie auch immer Sie es benannt haben.

+0

was mongoDB.User.findOneAndUpdate in dieser Zeile was ist Benutzer –

+0

Das ist in der Regel Verweis auf ein MongoDB-Schema in einer anderen Datei, ich bin mir nicht sicher, wie Sie Ihre Dateistruktur haben. Scheint so, als hättest du das nicht, nimm einfach mongoDB. – mrtaz

1

Sie konnten dieses

user.update({ _id:user._id },$set{user}); 
0

Versuchen Sie versuchen ..

user.findOneAndUpdate({_id:user._id}, user, {upsert:true}, function(err, doc){ 
    if (err) 
     return res.send(500, { error: err }); 
    return res.send("userdata updated successfully"); 
}); 

hier "Upsert = true" Option erstellt das Objekt, wenn diese nicht existiert.

Es ist standardmäßig falsch.

Verwandte Themen