当前位置 : 主页 > 网页制作 > Nodejs >

node.js – NodeJS Mongo – Mongoose – 动态集合名称

来源:互联网 收集:自由互联 发布时间:2021-06-16
所以,我想创建一个基于客户端的分区模式,我将集合名称设置为function(),我的伪代码是这样的: var mongoose = require('mongoose'), Schema = mongoose.Schema,var ConvForUserSchema = new Schema({ user_id: Number,
所以,我想创建一个基于客户端的分区模式,我将集合名称设置为function(),我的伪代码是这样的:

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创建一个新的集合地址.

干杯…

网友评论