【问题标题】:What's the best way of modeling mongoose/mongoDB database for saas为 saas 建模 mongoose/mongoDB 数据库的最佳方法是什么
【发布时间】:2018-06-07 16:13:04
【问题描述】:

我正在尝试对一个 Saas 应用程序进行建模,在该应用程序中我将有不同的公司使用这些服务。我对为这种类型的服务建模我的猫鼬数据库的最佳方式有点困惑。

所以模型类似于

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

为此类应用程序建模的最佳方法是什么?

我是否应该为用户、项目等创建不同的模型,并将公司唯一 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 公开方面,哪种方法最好?

如果它是第二种方式,那么我需要有 id 或那些子文档吗?我可以只使用唯一的公司 ID 进行查询,然后在文档中找到相关公司后查找所需的东西吗?

【问题讨论】:

    标签: node.js mongodb angular mongoose saas


    【解决方案1】:

    没关系,从https://www.mongodb.com/blog/post/6-rules-of-thumb-for-mongodb-schema-design-part-1的系列帖子中找到了非常详细的答案

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-07-14
      • 2019-10-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-05-15
      相关资源
      最近更新 更多