MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

NodeJS Mongo - Mongoose - Dynamischer Sammlungsname


Hallo, Sie müssen nur das Schemamodell mit Ihrem dynamischen Namen deklarieren, etwa so:

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;

Sie können dies also überall in Ihrem Code tun:

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

Gehen Sie nun zu Ihrer Mongo-Shell und listen Sie Sammlungen auf (verwenden Sie mydb und zeigen Sie dann Sammlungen an). Sie sehen eine neue Sammlung für die Adresse mit dem Präfix uid. Auf diese Weise erstellt Mongoose eine neue Sammlungsadresse für jede unterschiedliche Benutzer-UID.