sql >> Base de Datos >  >> NoSQL >> MongoDB

NodeJS Mongo - Mongoose - Nombre de colección dinámico


Hola, solo necesita declarar el modelo de esquema con su nombre dinámico, así:

var mongoose  =  require('mongoose');
var Schema  =  mongoose.Schema;

// our schema 

function dynamicSchema(prefix){
    var addressSchema = new Schema({
        dir : {type : String, required : true},    //los 2 nombres delimitados por coma (,) ej. Alberto,Andres
        city : {type : String, required: true},   //la misma estructura que para los nombres ej. Acosta, Arteta 
        postal : {type : Number, required : true},
        _home_type : {type : Schema.Types.ObjectId, required : true, ref : prefix + '.home_type'},
        state : {type : String, required : true},
        telefono : String,
        registered : {type : Date, default: Date.now }
    });
    return mongoose.model(prefix + '.address', addressSchema);
}

//no we export dynamicSchema function
module.exports = dynamicSchema;

entonces en su código en cualquier lugar puede hacer esto:

var userAdress = require('address.js')(id_user);
var usrAdrs1 = new userAddress({...});
    userAdrs1.save();

Ahora vaya a sus colecciones de mongo shell &list (use mydb y luego muestre las colecciones), verá una nueva colección para la dirección con el prefijo uid. De esta manera mongoose creará una nueva dirección de colección para cada uid de usuario diferente.