MongoDB
 sql >> Base de données >  >> NoSQL >> MongoDB

NodeJS Mongo - Mongoose - Nom de collection dynamique


Bonjour, il vous suffit de déclarer le modèle de schéma avec votre nom dynamique, comme ceci :

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;

donc dans votre code partout où vous pouvez faire ceci :

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

Maintenant, allez dans vos collections mongo shell &list (utilisez mydb puis affichez les collections), vous verrez une nouvelle collection pour l'adresse avec le préfixe uid. De cette façon, la mangouste créera une nouvelle adresse de collecte pour chaque uid utilisateur différent.