2012-08-30 13 views
7

Aby było jasne, to pytanie dotyczy ładowania danych z bazy danych, a nie aktualizowania dokumentów w bazie danych.Jak odświeżyć dane w już załadowanym dokumencie mongoose?

z następującym schematem:

new mongoose.Schema 
    name: String 
    code: 
    type: String 
    index: 
     unique: true 
    _contacts: [ 
    type: mongoose.Schema.Types.ObjectId 
    ref: 'Person' 
    ] 

stworzyłem mój dokument tak:

client = new Client code:'test',name:'test competition',contacts:[] 
client.save() 

indziej w aplikacji lub poprzez wywołanie API, gdzieś, że nie może łatwo odnieść do buforowana wersja powyżej:

Client.findOne(code:'test').exec (err,client) -> 
    return if err or not client 
    client._contacts.push person.id # person has come from somewhere 
    client.save (err) -> 
    return err if err 

Jeśli wrócimy do naszej pierwotnej clien t obiekt, który chciałbym wiedzieć, to czy istnieje sposób na odświeżenie tego obiektu dla całego dokumentu lub tylko dla określonej ścieżki. Na przykład;

client.refresh '_contacts', (err) -> 
    return err if err 

A może lepiej byłoby zachować tylko jeden obiekt, do którego odnosi się globalnie?

Odpowiedz

8

Najlepszą praktyką jest utrzymywanie instancji modelu Mongoose, takiej jak client, tak długo, jak aktywnie z niej korzystasz, właśnie dlatego, że może ona łatwo zostać zsynchronizowana z tym, co znajduje się w bazie danych. Odtworzyć obiekt client, gdy jest to potrzebne, używając findOne zamiast próbować odświeżyć potencjalnie nieaktualne kopie.

Powiązane problemy