我们正在使用继承模式的Mongoose鉴别器功能,根据文档实现。通过REST API,我们希望
当需要添加新的模型类型时,手动整理
POST
不同类型的文档,并使用通用控制器函数处理逻辑。假设我们有一个REST方法用于创建文档,可以是超类型GenericEvent
或子类型ClickedLinkEvent
或SignedUpEvent
(遵循上面链接文档的示例)。我目前正在做的类似于:var GenericEventModel = require('GenericEventModel');
var ClickedLinkEventModel = require('ClickedLinkEvent');
var SignedUpEventModel = require('SignedUpEvent');
// REST logic for creating a document of a specific type
module.exports.createEvent = function(req, res, next) {
var modelType = req.params.type; // as provided via REST parameter
var Model = getModel(modelType); // get the appropriate model type
new Model(req.body).save(next);
}
// TODO want to avoid this
function getMongooseModel(type) {
switch (modelType) {
case 'GenericEvent': return GenericEventModel;
case 'ClickedLinkEvent': return ClickedLinkEventModel;
case 'SignedUpEvent': return SignedUpEventModel;
// and many more, needs to be extended, every time a new type is added …
}
}
当需要添加新的模型类型时,手动整理
getMongooseModel
函数似乎容易出错,我怀疑其他人在编写代码时会忘记它。因此我的问题是:在Mongoose API中是否存在一个现有的函数,可以通过查看所有已知的子模式,为给定的鉴别器键提供适当的模型?
Mongoose#model
可以用于获取一个模型。这似乎正是我正在寻找的!:) 我会尝试并回来的! - qqilihq