MongoDB
 sql >> Database >  >> NoSQL >> MongoDB

NodeJS Mongo - Mongoose - Nome della raccolta dinamica


Ciao, devi solo dichiarare il modello dello schema con il tuo nome dinamicamente, in questo modo:

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;

quindi nel tuo codice ovunque puoi farlo:

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

Ora vai alle tue raccolte mongo shell &list (usa mydb quindi mostra le raccolte), vedrai una nuova raccolta per l'indirizzo con il prefisso uid. In questo modo mongoose creerà un nuovo indirizzo di raccolta per ogni diverso utente uid.