2012-08-30 13 views
7

Para ser claros, esta pregunta se relaciona con la carga de datos de la base de datos, no la actualización de documentos en la base de datos.¿Cómo se actualizan los datos en un documento de mangosta que ya se ha cargado?

con el siguiente esquema:

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

que he creado mi documento, así:

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

En otras partes de la aplicación o mediante una llamada a la API, en alguna parte que no puede referirse fácilmente a la versión en caché anterior:

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 

Si volvemos a nuestra cli originales t objeto lo que me gustaría saber es si hay alguna forma de actualizar ese objeto para todo el documento o solo para una ruta en particular. Por ejemplo;

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

¿O sería una buena práctica mantener solo un objeto al que se hace referencia globalmente?

Respuesta

8

La mejor práctica es conservar solo una instancia de modelo de Mongoose como client mientras la use activamente, precisamente porque puede no estar sincronizada con lo que contiene la base de datos. Vuelva a crear su objeto client siempre que lo necesite utilizando findOne en lugar de tratar de actualizar las copias potencialmente caducas.

Cuestiones relacionadas