私たちはdocumentationに従って実装したMongooseの弁別機能を継承したスキーマを使用しています。Mongoose discriminators、instantiate documents
私たちは、REST APIを通じて異なるタイプのドキュメントをPOST
にして、共通のコントローラ機能でロジックを処理したいと考えています。仮定
は、我々はスーパータイプGenericEvent
、またはサブタイプClickedLinkEvent
、又はSignedUpEvent
のいずれかとすることができる文書を作成するためのRESTの方法を持っている(上記のリンクドキュメントの例に従うこと)。新しいモデルタイプが追加されるたびに手動でgetMongooseModel
機能をキュレートすること
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 …
}
}
ではなくエラーが発生しやすいようだ、と私はコードに作業する他の人がする疑いがある:私は現在やっていることのようなものです単にそれを忘れる。
私の質問:既存のすべての既知のサブスキーマを見て、指定された識別子のキーに適切なモデルを与えることができるMongoose APIの既存の関数がありますか?
驚くばかりです。モンゴース#モデルが**モデルを入手するのに使用できることは知らなかった。これはまさに私が探しているものと思われます! :)私はやってみよう! – qqilihq
完璧な作品です、ありがとうございました! – qqilihq