2012-03-28 17 views
6

Ho un bel problema mentre sto tentando di aggiornare un documento incorporato in mongodb. Ho provato due metodi e nessuno dei due ha funzionato, e ho cercato ovunque per motivi per cui non si aggiorna. Ad ogni modo, il mio schema assomiglia a questo (posso notare che il documento incorporato che sto cercando di aggiornare è di tipo Misto).Mangusta non sta aggiornando il documento incorporato

var UserModel = new mongoose.Schema({ 
    account: String, 
    salt: String, 
    password: String, 
    highlight_words: String, 
    networks: {}, 
    ip: String, 
    ident: String, 
    is_connected: Boolean, 
    account_type: String 
}); 

ho provato ad aggiornare 'reti' con questi due frammenti di codice e non il lavoro. Sto per strapparmi i capelli.

self.userModel.update({account: key}, {networks: self.client_data[key]['networks']}, function(err) {}); 

E (nota che ho provato ad aggiungere una funzione di callback per salvare(), ed esegue senza errori)

self.userModel.findOne({account: key}, function(err, doc) { 
    doc.networks = self.client_data[key]['networks']; 
    doc.markModified('networks').save(); 
}); 

Qualsiasi aiuto sarebbe apprezzato! Grazie!

Edit:

il problema era che l'oggetto era come così {'some.thing': {more: 'stuff'}} ovviamente non piaceva il. che è comprensibile!

+0

Qual è il valore di 'self.client_data [chiave] [ 'reti']'? Prova a sostituirlo con alcuni valori letterali per facilitare il debug. – paulmelnikow

+0

È un oggetto abbastanza grande, so per certo che è popolato però. Ho provato a sostituirlo con 'doc.networks = {test: 123};' e quello non ha ancora salvato il documento .. – rickibalboa

+0

Anche nella prima versione, sto indovinando? Qualche possibilità che non corrisponda a nulla? 'Delete ({account: key})' funziona? – paulmelnikow

risposta

11

Prova doc.markModified('networks');. Sembra che networks sia un tipo schemaless. Mangusta non è in grado di rilevare automaticamente le modifiche ai tipi di schemi.

+0

mi hai salvato la vita – Unitech

+0

sei il mio eroe! –

+0

Uomo stupendo ha funzionato per me :) –

2

È necessario definire completamente lo schema perché funzioni. Per esempio:

reti { tipo: "Stringa" }

Problemi correlati