2017-06-03 5 views
0

Meine Daten sind wie folgt:Model.update nicht auf Mungo arbeitet

{ 
"profileID": "123", 
"fullname": "Name", 
"notifications": [ 
    { 
    "read": false, 
    "date": "2017-05-06 13:40:01", 
    "post": "5555555", 
    "action": "commented", 
    "profileID": "456" 
    }, 
    { 
    "read": false, 
    "date": "2017-05-06 13:40:15", 
    "post": "5555555", 
    "action": "commented", 
    "profileID": "456" 
    } 
]} 

Ich versuche, einen Knoten API Weg zu machen, um der Lage sein, jede Benachrichtigung zu aktualisieren. Für die Einzigartigkeit kann die Datum Variable verwendet werden. von

  • Benutzer suchen Profileid
  • Erhalten Sie seine/ihre Benachrichtigungen
  • Aktualisieren der lesen Wert für die Benachrichtigung, dass die Datum matches:

    So zusammenzufassen.

Ich habe es in der folgenden Weise aufgebaut:

apiRouter.post('/api/changeNotificationStatus', function(req, res){ 

     userModel.update(
      {profileID: req.body. profileID, "notifications.date": req.body.date, "notifications.post": req.body.post, "notifications.action": req.body.action}, 
      {$set:{"notifications.$.read": true}}, 
      {multi: false}, 

      function(err, data) { 
       if (err){ 
        console.log(err); 
       } else { 
        console.log(data); 
       } 
      }); 

    }); 

Es gibt keine Fehler, aber ich bekomme die folgende:

{ n: 0, nModified: 0, ok: 1 } 

ich, dass die Variablen bestätigt haben: erf. body.profileID, req.body.date, req.body.date, req.body.post und req.body.action kommen gut durch.

Mache ich etwas falsch?

PS: Danke Neil Lunn für das Zeigen auf den model.update Beitrag!

+0

@ neil-lunn - Ich habe die Frage aktualisiert, so dass es kein Duplikat mehr ist. –

+0

Noch ein Duplikat. Deine Syntax ist falsch. Lesen Sie die Antwort erneut. Hier ist die Korrektur. '{profileID: req.body.profileID," notifications.date ": req.body.date," notifications.post ": req.body.post," notifications.action ": req.body.action}'. Sie verwenden also nicht das '$' im "Abfrage" Teil des Updates. Sie verwenden es nur in dem Teil nach '$ set'. –

+0

Danke, dass du darauf hingewiesen hast und die dummen Fehler entschuldigt. Aber ich habe es gerade ausprobiert und bekomme das gleiche Ergebnis, nämlich: {n: 0, nModifiziert: 0, ok: 1} ... Ich habe die Parameter erneut überprüft (über einen Debugger) und sie scheinen in Ordnung zu sein. Irgendwelche Ideen? –

Antwort

0

nur jedem zu helfen, über diese kommt, gab es mehrere Probleme:

1) Das Schema für userModel falsch war, wie in, sollte es gewesen sein:

notifications: [{ 
    read: Boolean, 
    date: Date, 
    post: String, 
    action: String, 
    profileID: String 
}] 

von Statt:

notifications: [{ }] 

2) im userModel.update Befehl sollte ich getan habe:

new Date(req.body.date) 

Statt:

req.body.date 

Hoffnung hilft dies jemand in der Zukunft.