2013-08-10 8 views
7

węzeł js, żagle js, wodnica. Potrzebuję zaktualizować (lub wypchnąć) wartości do poniższego schematu po wstawieniuPrzekaż wartości do tablicy bazy danych Mongodb poprzez (sails js) linię wodną

Używam sailsjs z waterline i mongodb.

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

      } 
     ] 
     } 
    ] 
    } 
] 
} 
} 

Muszę wiedzieć, jak ją aktualizować muszę coś takiego po aktualizacji

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

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

      } 
     ] 
     } 
    ] 
    } 
] 
} 
} 

proszę mi ktoś pomoże.

+0

Mogodb za „$” - Operator obsługuje tylko 1 poziom zagnieżdżenia tablicy, więc tam nie myśleć jest rozwiązaniem dostępnym dla twojego obecnego schematu. może powinieneś przemyśleć to jeszcze raz i uczynić go mniej zagnieżdżonym. –

Odpowiedz

16

Świetne pytanie! Będziemy chcieli, aby find() a następnie save() odpowiednia instancja model:

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

Sporządzono w moim telefonie więc przepraszam za wszelkie literówki :)

+0

Dzięki mikermcneil, To świetnie, ale co to oznacza? –

+0

Ah, przepraszam- powinienem wyjaśnić. 23 jest identyfikatorem użytkownika, którego szukamy, po prostu przykład. – mikermcneil

+0

oh..ok mcneil, dzięki za informacje –

3

Okazało się, że w żagle nie mogłem użyć odpowiedź mikermcneil. Musiałem udać się rodzimy:

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 mam zapytań moich danych przez sessionData.id_ glównego

+3

Dzięki za umieszczenie tego! Czy mógłbyś rozszerzyć to, aby wyjaśnić, dlaczego musisz użyć '.native()', aby pomóc ludziom znajdującym tę odpowiedź w Google? – mikermcneil

Powiązane problemy