Если мне нужно определенное управление рабочими процессами для разных пользователей, нужно ли мне включать это в свою модель данных?

#javascript #database #mongodb #mongoose #data-modeling

Вопрос:

Я новичок в программировании и сталкиваюсь с проблемой, которая концептуально сводит мой мозг с ума. Я постараюсь изо всех сил объяснить это и также свяжусь со своим github, но вот он.. Музыкальное приложение, которое я создаю, будет иметь три разных пользовательских «классификации» или («Класс» в моем коде):

  1. Художники
  2. Владельцы помещений
  3. Фанаты

Цель состоит в том, чтобы, когда пользователь регистрируется, он выбрал персону (аналогичную Bandcamp), которая затем определяет их функциональность.

Вот рабочий процесс:

  • Каждый является «пользователем»
  • Пользователи либо а) регистрируют свое место проведения, либо б) регистрируют свою группу, либо в) регистрируются как фанаты

Затем площадки могут создавать «события» для выступлений групп, но группы не могут создавать события. Пользователи могут просматривать как места проведения, так и группы, чтобы узнать, какие мероприятия они проводили/играли. Болельщики могут посещать мероприятия.

Я могу разобраться в элементах управления с помощью авторизации, но я хочу убедиться, что правильно настраиваю свою модель данных-и вот тут я запутываюсь.

Используя мою модель художника в качестве примера, если художник также является пользователем, как мне включить пользователя в мою модель художника? Будет ли добавление схемы «user_id» ниже создавать циклическую ссылку?

 const mongoose = require('mongoose');
const Schema = mongoose.Schema;

const artistSchema = new Schema({
  name: {
    type: String,
    required: [true, 'Artist must have a name']
  },
  genre: {
    type: String
  },
  email: {
    type: String,
    required: [true, 'Contact email required']
  },
  location: {
    type: String,
    required: [true, 'Hometown (so you can be paired with local venues)']
  },
})

module.exports = mongoose.model('Artist', artistSchema);
 

Вот ссылка на мой github, если вам нужна дополнительная информация о четырех моделях. Спасибо!!

Комментарии:

1. Мое предложение-ориентироваться на объекты. Создайте класс для каждого объекта, затем extend исполнителя с пользовательским классом. developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/…

2. Спасибо за общий доступ — будет ли это вписываться в модель БД? Тогда я мог бы просто расширить каждую переменную на «пользователей»?

3. Не знаете, как настроена ваша модель данных, вы используете реляционную БД? Sql или nosql?

4. MongoDB, значит, это NoSQL. Глядя больше на «расширение», кажется, что это и есть ответ. Мне нужно будет больше ознакомиться, прежде чем на самом деле писать код, но отмечать правильный ответ @riuCosta. Спасибо всем за помощь!