2013-08-10 4 views
7

Knoten js, Segel js, Wasserlinie. Ich muss Werte in das folgende Schema nach dem Einfügen aktualisierenPush-Werte in Array von Mongodb-Datenbank durch (Segel js) Wasserlinie

Ich benutze Sailsjs mit Wasserlinie und Mongodb.

{ 
"countries": { 
"states": [ 
{ 
"statename": "state", 
"districts": [ 
{ 
"distname": "district", 
"cities": [ 
{ 
"cityname": "Hyderabad", 
"places": [ 
       { 
        "placename": "hitechcity" 
       } 
       ] 

      } 
     ] 
     } 
    ] 
    } 
] 
} 
} 

Ich muss wissen, wie es zu aktualisieren ich so etwas wie dieses benötigen nach dem Update

{ 
"countries": { 
"states": [ 
{ 
"statename": "state", 
"districts": [ 
{ 
"distname": "district", 
"cities": [ 
{ 
"cityname": "Hyderabad", 

       "places": [ 
       { 
        "placename": "hitechcity" 
       }, 
       { 
        "placename": "someother place" 
       } 
       ] 

      } 
     ] 
     } 
    ] 
    } 
] 
} 
} 

bitte jemand mir helfen.

+0

Mogodb des ‚$‘ - Operator nur 1 Stufe der Array-Verschachtelung unterstützt, so dass ich glaube nicht, dass es ist eine Lösung, die für Ihr aktuelles Schema verfügbar ist. vielleicht solltest du es noch einmal überdenken und es weniger verschachtelt machen. –

Antwort

16

Große Frage! Sie werden zu find() wollen und dann save() die relevanten Modellinstanz:

User.findOne(23).exec(function (err, user) { 
    user.roles.push({ /* whatever */ }); 
    user.save(function (err) { /* all done */ }); 
}); 

Geschehen auf meinem Handy so traurig über irgendwelche Fehler :)

+0

Danke mikermcneil, das ist toll, aber was bedeutet das 23? –

+0

Ah, Entschuldigung - sollte geklärt haben. 23 ist die ID des Benutzers, den wir suchen, nur ein Beispiel. – mikermcneil

+0

oh..ok Mcneil, danke für die Info –

3

ich, dass mit Segel fand ich nicht mikermcneil Antwort benutzen konnten. Ich musste gehen nativer:

Runtestunit.native(function(err, runtestunit){ 
    runtestunit.find({sessionID : sessionData.id_}).toArray(function(err, results) { 
     if (err) return res.serverError(err); 
     runtestunit.update({ _id: results[0]._id }, 
      { $push: { screenshots: filename } }, 
      function(err, screenshots) { 
      if(err) sails.log.err(err) 
     else sails.log.info("Item pushed") 
     }) 
    }); 
}); 

FYI ich von einem sessionData.id_ Schlüssel

meine Daten abfragen bin
+3

Danke für das Posten! Würde es Ihnen etwas ausmachen, dies zu erweitern, um zu erklären, warum Sie '.native()' verwenden mussten, um Leuten zu helfen, die diese Antwort auf Google finden? – mikermcneil