Json MongoDB:从MongoDB中存储的文档创建Mongoose模型/模式
正如标题所描述的,我试图找出是否可以用现有MongoDB文档的JSON实例化一个新的mongoose模型和模式?似乎只要在Mongoose运行之前检索到文档,我就可以这样做 这可能吗?理想情况下,我希望在不需要重新启动节点的情况下动态地执行此操作 ****编辑*******以下是我尝试过的。 注意:如果模式创建是异步的,setTimeout在其中。这是一个简陋的模型,只是为了看看这个概念是否有效。 这不管用Json MongoDB:从MongoDB中存储的文档创建Mongoose模型/模式,json,node.js,mongodb,model,mongoose,Json,Node.js,Mongodb,Model,Mongoose,正如标题所描述的,我试图找出是否可以用现有MongoDB文档的JSON实例化一个新的mongoose模型和模式?似乎只要在Mongoose运行之前检索到文档,我就可以这样做 这可能吗?理想情况下,我希望在不需要重新启动节点的情况下动态地执行此操作 ****编辑*******以下是我尝试过的。 注意:如果模式创建是异步的,setTimeout在其中。这是一个简陋的模型,只是为了看看这个概念是否有效。 这不管用 function initModels(models) { for (var
function initModels(models) {
for (var i = 0, l = models.length; i < l; i++) {
console.log(models[i])
exports[models[i].name + "Schema"] = mongoose.Schema(models[i].model, {collection: "ModelData"});
(function(itrModel){
var model = itrModel;
setTimeout(function(){
exports[model.name] = mongoose.model(model.name.toUpperCase(), model.name + "Schema");
},2000)
})(models[i])
}
}
exports.getModels = function () {
DataConnection.Connect(function (db) {
var collectionName = "Models";
var collection = db.collection(collectionName);
collection.find().toArray(function (err, models) {
initModels(models);
})
})
};
Schema对象的构造函数仅将对象作为参数。您需要遍历文档中的键、子键和数组,并为对象的每个路径添加键和数据类型,然后将最终的对象传递给构造函数。唯一的技巧是如何确定每个路径的数据类型。您必须测试文档中的每个值,以确定它是否是字符串、数字、日期……如果重启是唯一的问题,为什么不尝试一下呢
{
"name" : {
"type" : "String",
"required" : true
},
"email" : {
"type" : "String",
"required" : false,
"index" : true,
"index" : true
},
"password" : {
"type" : "String",
"required" : true
},
"role" : {
"type" : "String",
"required" : true
},
"createDate" : {
"type" : "Number",
"required" : true
}
}