2016-12-11 2 views
0

私はプロジェクトの一部をメディア・ライブラリーとして構築しています。ユーザーは、フォルダを作成し、そのフォルダにファイルをアップロードすることができます。リレーショナル・マングース・スキーマの処理

マイフォルダ/ファイル構造は、フォルダのみがデータベースに存在し、ファイルを1つの物理フォルダの下にあるが、各ファイルのメタデータは、フォルダ構造内のレベルが含まれていることを仮想的な意味です。今、すべてのフォルダとファイルの

は1つのスキーマの下で、私が選択したフォルダの子フォルダ/ファイルを取り出すことができ、私は単一のフォルダ/ファイルを取得することができますし、また、私はそのタイプによってファイルを取得することができます。そしてそれは、私は、各ファイルタイプは属性のそれ自身のセットを持っていますので、独自のスキーマに、各ファイルの種類を分離するためにwan't

を非常にうまく動作しますが、)。そして今、これらのスキーマを自分のリソーススキーマにリンクする方法がわかりません。それは、選択したフォルダの子フォルダ/ファイルを取得するために、私は別に各スキーマを照会し、一つにそれぞれの結果を結合する必要があること

を意味するのでしょうか?それはあまり良いアイデアではないようですが、私はそれをどう扱うかを理解できません。

はシナリオのこのタイプを処理するための任意の一般的なアプローチはありますか?

ありがとうございました。

答えて

0

私が正しく理解していれば、あなたは右、ファイルのメタデータとフォルダ構造をDBへ保存していますか?

ので、多分あなたと、各ファイルの種類のスキーマをリンクするためにマングースを伝えることができるために移入を使用することができた場合:次に、あなたが行うことができます

SomeTypeSchema = new Schema({ 
    // ... metadata fields ... 
    resourceParent: { 
     type: Schema.Types.ObjectId, 
     ref: 'ResourceModelName' 
    } 
}); 
module.exports = mongoose.model('SomeType', SomeTypeSchema); 

var type = SomeType.find({field: 'somefilter'}) 
    .populate('resourceParent') 
    .exec(function(err) { 
     console.log(type.resourceParent.name); 
    }); 

は、ドキュメンテーション:http://mongoosejs.com/docs/populate.html

関連する問題