2012-08-30 7 views
7

Um zu klären, bezieht sich diese Frage auf das Laden von Daten aus der Datenbank, nicht das Aktualisieren von Dokumenten in der Datenbank.Wie aktualisieren Sie die Daten in einem Mungo-Dokument, das bereits geladen wurde?

Mit folgendem Schema:

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

Ich habe mein Dokument wie so erstellt:

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

An anderer Stelle in der Anwendung oder über einen API-Aufruf, irgendwo, dass es nicht leicht verweisen auf die Version im Cache gespeicherte oben:

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 

Wenn wir zu unserer ursprünglichen clien zurückkehren t Ich möchte gerne wissen, ob es eine Möglichkeit gibt, das Objekt entweder für das gesamte Dokument oder nur für einen bestimmten Pfad zu aktualisieren. Zum Beispiel;

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

Oder wäre es besser Praxis sein, um nur ein Objekt beizubehalten, global bezeichnet wird?

Antwort

8

Bewährte Methode ist es, eine Mongoose-Modellinstanz wie client so lange herumzuhalten, wie Sie sie gerade verwenden, weil sie so leicht mit den Daten in der Datenbank nicht mehr synchron ist. Erstellen Sie Ihr client Objekt wann immer Sie es benötigen, indem Sie findOne verwenden, anstatt zu versuchen, potenziell veraltete Kopien zu aktualisieren.

Verwandte Themen