3

问题:我正在制作一个 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);
}

好的,所以这为我们创建了一个带有自定义模式的模型。

现在我的问题是,在我运行此代码后,创建一个模型,然后重新启动服务器,新的集合/模型将不存在 - 因为显然只有在保存文档时才会创建一个集合 - 我不想要要立即保存文档(因为我没有),只需创建一个集合。

问题:有没有办法用这个“固定”模式创建一个集合 - 以便将来插入的文档应该严格符合模式?我基本上是create table在寻找类似 SQL 的东西。

4

2 回答 2

3
  1. 您不能在 Mongo 中创建具有固定模式的集合。这是一个明确的功能
  2. 只要您在尝试使用之前已经在 Mongoose 中注册了新的 Schema,它应该可以正常工作,无论该集合是否存在。
  3. 无论如何,猫鼬模式只是强制执行的,您仍然可以通过下拉到本机驱动程序来偷偷摸摸,这真的很容易。Whatever.collection.insert
  4. 每次启动服务器时,您都需要重新注册您的模式
于 2011-12-26T18:43:02.537 回答
0

我也在开发一个像你这样的应用程序,用户可以在其中创建他们的模式,然后在 Mongoose 中自动加载。我创建了一个函数,在使用之前检查是否在 Songoose 中加载了模式,如果没有加载(例如在重新启动应用程序后),它会加载它。

我还没有文档,但你可以在这个jslModel.js文件中找到我的实现。搜索function loadMongooseModel

于 2012-01-20T01:20:17.743 回答