将多个类似的mongoose模式包装到单个模式中

时间:2015-02-27 17:04:36

标签: node.js mongoose

我有一个存储表示对象的记录的服务器,它使用Mongoose来管理这些记录。我希望能够查询/更新/等。具有简单API的所有对象(即单个端点)。不同类型的对象具有一些相同的属性和一些不同的属性,因此单个 静态 对象架构不会这样做。相反,我仍然想要一个单一的模式,但是我希望能够通过在创建每个新对象时添加/删除字段来稍微改变它,并且根据类型的不同,字段不存在。物体。我不想要混合模式,因为我想要对每种类型的Object进行错误验证。我想要一个单一的模式(而不是每种类型的Object的不同模式),所以我可以做到

Object = mongoose.model('Object', ObjectSchema);
Object.findOne({objectType: "type1"}, function(err, model) {
    ...
});

所以基本上,我想要字段验证,同时仍然保持一些属性的灵活性,以及​​单点查询/更新/等。我的对象记录。如果我使用每个新Object更改模式,将其重新编译为模型,并创建该模型的新实例,那么不同模型的所有实例(从同一模式的不同修改版本编译)仍然可以像上面一样查询吗?

显然,我是Mongoose的新手。我刚刚在这里谈了很多关于模式的内容,老实说,我不知道我是否应该使用“#34; model"取代"架构"在某些地方。我只是不知道如何才能完成所有这些。如果我没有意义,请告诉我。

1 个答案:

答案 0 :(得分:0)

我们成功地将mongoose模型继承和鉴别器功能用于非常类似的场景。请看这里的例子:

http://www.laplacesdemon.com/2014/02/19/model-inheritance-node-js-mongoose/

您也可以使用此插件: https://www.npmjs.com/package/mongoose-schema-extend