MongoDB Mon goose Схема структуры вложенных документов и отношений - PullRequest
0 голосов
/ 28 мая 2020

У меня есть проект со следующим потоком документов.

Пользователи -> Учетные записи -> Проекты

Пользователи

  • Пользователи имеют специфицированные c роли

Учетные записи

  • CRUD, обусловленный ролью пользователя
  • Specifi c пользователи будут иметь доступ к индивидуальные счета. Я думал добавить массив userGroup с идентификаторами пользователя?

Projects

  • Вложено в Accounts, относящиеся к одному accountToken ID
  • CRUD обусловлено ролью пользователя
  • Specifi c пользователи будут иметь доступ к отдельным проектам.

Вот примеры моделей схем, упрощенные для демонстрационных целей.

UserSchema. js:

const UserSchema = new mongoose.Schema({
    email: {
      type: String,
      required: [true, 'Please add an email'],
      unique: true,
    },
    role: {
      type: String,
      enum: ['admin', 'user'],
      default: 'user'
    }
  });

  module.exports = mongoose.model('User', UserSchema);

AccountSchema. js:

const AccountSchema = new mongoose.Schema({
    accountName: {
      type: String,
    },
    accountToken: {
      type: String
    }
  });

  module.exports = mongoose.model('Account', AccountSchema);

ProjectSchema. js:

const ProjectSchema = new mongoose.Schema({
    projectName: {
        type: String,
    },
    projectType: String,
    projectToken: String
})

module.exports = mongoose.model('Project', ProjectSchema);

Я застрял на лучший способ настроить вложенные или вложенные отношения схемы и лучший способ связать данные между собой. Любые рекомендации и предложения будут огромным подспорьем! Спасибо !!!

1 Ответ

1 голос
/ 03 июня 2020

Попробуйте это;

const UserSchema = new mongoose.Schema({
email: {
  type: String,
  required: [true, 'Please add an email'],
  unique: true,
},
role: {
  type: String,
  enum: ['admin', 'user'],
  default: 'user'
}
});

module.exports = mongoose.model('User', UserSchema);

const AccountSchema = new mongoose.Schema({
  userId: {
     type: mongoose.Schema.Types.ObjectId,
     required: true,
     ref: 'User'
 },
 accountName: {
     type: String,
 },
accountToken: {
    type: String
}
});

module.exports = mongoose.model('Account', AccountSchema);

const ProjectSchema = new mongoose.Schema({
  accountTokenId:{
      type: String
  },
  projectName: {
      type: String,
  },
  projectType: String,
  projectToken: String
})

module.exports = mongoose.model('Project', ProjectSchema);
...