所以,我想创建一个基于客户端的分区模式,我将集合名称设置为function(),我的伪代码是这样的: var mongoose = require('mongoose'), Schema = mongoose.Schema,var ConvForUserSchema = new Schema({ user_id: Number,
var mongoose = require('mongoose'),
Schema = mongoose.Schema,
var ConvForUserSchema = new Schema({
user_id: Number,
conv_hash: String,
archived: Boolean,
unread: Boolean
}, function CollectionName() {
return (this.user_id % 10000);
});
这是否可以通过moongose实现,以便读取和写入都能按预期工作?
您好,您只需要使用您的dinamically名称声明架构模型,如下所示:var mongoose = require('mongoose');
var Schema = mongoose.Schema;
// our schema
function dinamycSchema(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 dinaymicSchema function
module.exports = dinamycModel;
所以在你的代码中你可以做到这一点:
var userAdress = require('address.js')(id_user);
var usrAdrs1 = new userAddress({...});
userAdrs1.save();
现在去你的mongo shell&列表集合(使用mydb然后显示集合),您将看到一个带有uid前缀的地址的新集合.通过这种方式,mongoose将为每个不同的用户uid创建一个新的集合地址.
干杯…
