问题:我正在制作一个Web服务,允许开发人员“注册”他们的Mongoose模式-他们将在浏览器中创建JSON模式,然后将其AJAX到我的服务器.
因此,我将使用提交的模式创建一个新的Mongoose模型,但是现在即使重新启动服务器,我也需要该模式存在.
我有执行类似的代码:
/* schemaObj is what you create a schema with,
for example { name: String, id: Number } */
registerSchema = function(model_name, schemaObj) {
desiredSchema = new Schema(schemaObj);
desiredCollection = 'collection_' + model_name;
mongoose.model(desiredCollection, desiredSchema, desiredCollection);
}
好的,这样就为我们创建了带有自定义架构的模型.
现在我的问题是,在运行此代码,创建模型然后重新启动服务器之后,新的集合/模型将不存在-因为显然只有在保存文档时才创建集合-我不希望立即保存文档(因为我没有文档),只需创建一个集合即可.
问题:有没有一种方法可以使用此“固定”模式创建集合-以便将来要插入的文档应严格遵循该模式?我基本上是在寻找类似在SQL中创建表之类的东西.
解决方法:
>您无法在Mongo中使用固定模式创建集合.明确地,这是一个feature.
>只要您在尝试使用Mongoose之前已经向Mongoose注册了新的Schema,无论该集合是否存在,它都可以正常工作.
>无论如何,Mongoose模式只是强制执行的,您仍然可以通过下拉至本机驱动程序来偷偷摸摸,这确实很容易.随便什么
>您需要在每次启动服务器时重新注册架构