2017-12-27 19 views
-1

私はサービスを使用する異なる会社を持つSaasアプリケーションをモデル化しようとしています。私はこのタイプのサービスのために私のmongooseデータベースをモデリングする最善の方法で少し混乱しています。サング用のmongoose/mongoDBデータベースをモデリングする最良の方法は何ですか

ので、モデルは

Company 
    Name 
    Users 
    ->Roles (Admin,editor etc) 
    Projects 

このようなアプリケーションをモデル化する最良の方法は何ですか?のようなものですか

iは、ユーザ、プロジェクトなどのための異なるモデルを作成し、その企業内にあるすべてのそれらのユーザーまたはプロジェクトに、会社固有のIDを添付してください。また、それらのユーザーやプロジェクトを企業モデルで参照することもできます。簡単に作るの面で長期的に最善のアプローチである別のモデルを持つことなく、

ただ、会社のスキーマ内のユーザーとプロジェクトのスキーマを参照する
//User is used as a separate model and is only referenced in company schema 
var userSchema = new Schema({ 
    Name : String, 
    Role: { 
     type: String, 
     enum: ['admin','reader', 'editor'], 
     default: 'reader' 
    }, 
    Company : { type: Schema.ObjectId, ref: 'Company' } 
}); 
mongoose.model('User', userSchema); 

var companySchema = new Schema({ 
    Name : String, 
    Users : [ 
     { type: Schema.ObjectId, ref: 'User' } 
    ], 
    Projects : [ 
     { type: Schema.ObjectId, ref: 'Project' } 
    ] 
}); 

mongoose.model('Company', companySchema); 

それとも

ような何か

//userSchema is used as a child in company schema 
var userSchema = new Schema({ 
    Name : String, 
    Role: { 
     type: String, 
     enum: ['admin','reader', 'editor'], 
     default: 'reader' 
    }, 
}); 

var companySchema = new Schema({ 
    Name : String, 
    Users : [ 
     userSchema 
    ], 
    Projects : [ 
     projectSchema 
    ] 
}); 

mongoose.model('Company', companySchema); 

サブ文書の照会、メモリ割り当て、将来必要に応じて公開APIの公開?

もし2番目の方法なら、私はidやそれらのサブ文書を持つ必要がありますか?一意の会社IDを使用してクエリを作成し、関連会社が文書内に見つかったら必要なものを見つけることはできますか?

答えて

関連する問題