2016-10-11 1 views
0

Ich habe eine Express-JS-Anwendung, in der ich versuche, PUT (aktualisieren Sie den Namen eines vorhandenen Benutzers). Mein Schema ist verschachtelte Array und sieht wie folgt aus:Express JS PUT nicht speichern, aber es aktualisiert

enter image description here

Mein Code um diesen Benutzer zu aktualisieren PUT sieht wie folgt aus:

router.route('/sensors_update/:_id/') 
    .put(function (req, res) { 
     console.log("inside update put") 
     User.findById(req.params._id, function(err, user) { 
      if (err) 
       res.send(err); 
      console.log(user); 
      user.name = req.body.name; 
      console.log("User val is" + user); 
      user.save(); 
     }); 
    }); 

ich in der Lage bin eindeutig den Namen des Benutzer sehen zu wird über die JS-Konsole aktualisiert. Aber ich habe Probleme, wenn es darum geht, dieses Benutzerobjekt zu speichern. Ich denke, das sollte sein, weil ich ein verschachteltes Schema habe. Ist meine Annahme richtig? Vorschläge zum Speichern eines Benutzerobjekts mit verschachtelten Arrays Hier

ist die Konsole Nachricht:

inside update put 
 
{ _id: 'Manasa', 
 
    name: 'Manasa Sub', 
 
    __v: 0, 
 
    sensors: 
 
    [ { sensor_name: 'ras', 
 
     _id: 57da0a4bf3884d1fb2234c74, 
 
     measurements: [Object] } ] } 
 
User val is{ _id: 'Manasa', 
 
    name: 'Manas Sub', 
 
    __v: 0, 
 
    sensors: 
 
    [ { sensor_name: 'ras', 
 
     _id: 57da0a4bf3884d1fb2234c74, 
 
     measurements: [Object] } ] }

ich mich gefragt, warum die verschachtelte Array zugegriffen wird, wenn ich gerade bin versucht, den Namen des Benutzers zu aktualisieren & speichern.

Dank

UPDATE

_http_outgoing.js: 335 throw new Error (. 'Can \' t-Header gesetzt, nachdem sie gesendet werden '); ^ Fehler: Header können nach dem Senden nicht festgelegt werden.

Wie kann ich das lösen?

Antwort:

{ 
    "message": "Cast to date failed for value \"7:00\" at path \"time\"", 
    "name": "CastError", 
     "type": "date", 
     "value": "7:00", 
     "path": "time" 
     } 

Antwort

0

Lösung: Push und Set von Mongodb tut den Trick, wenn Sie Array geschachtelt haben. das ist die Art, ein einzelnes Feld zu aktualisieren.

0

Nested-Schema ist nicht das Problem. Der Fehler ist in der Konsole eindeutig protokolliert. Sie übergeben den String-Typ-Wert für das Schema des Datumstyps. Ändern Sie den Wert der Zeit vom Zeichenfolgentyp in das Datum.

Oder wenn Sie Zeichenfolge speichern möchten, dann ändern Sie die Zeit shcmea Typ von Datum in Zeichenfolge. Zeit: {Typ: String}

+0

Können Sie bitte mein Update sehen. Danke – HitRefresh

+0

Dieser Fehler tritt auf, wenn Sie versuchen, eine Antwort mehrfach an den Client zu senden. Stellen Sie sicher, dass es in Ihrer Route korrekt ist. – Sachin

+0

Konsole den Fehlerblock von findById. Es sollte keinen Fehler werfen. – Sachin

Verwandte Themen