NodeJS

#node.js #model #sequelize.js #associations #junction

Вопрос:

Я новичок в NodeJS, и у меня возникли некоторые проблемы с отношениями, моделями и контроллерами. Я читал и пытался понять API-интерфейс Sequelize, но я действительно не знаю, как выполнять определенные действия, и поэтому я застрял.

У меня есть 2 основные модели. Один называется Проектом, а другой — Пользователем. Эти 2 модели я хочу связать с третьей моделью, называемой UserProject.

Модель UserProject ссылается на модели проекта и пользователей через их PK (project_id, user_id), а также имеет третий столбец с именем «тип пользователя», который определяет, имеет ли пользователь тот или иной ранг (Мастер, разработчик,…)

Я не знаю, как продолжать, так как в процессе я получаю бесчисленные ошибки, и прошло 2 дня без света. Я поделюсь своими моделями, контроллерами и индексом ниже:

Модель пользователя:

 module.exports = (sequelize, Sequelize) => {
const User = sequelize.define("user", {
username: {
  type: Sequelize.STRING
},
password: {
  type: Sequelize.STRING
},
email: {
  type: Sequelize.STRING
}
});

return User;
};
 

Модель проекта:

 module.exports = (sequelize, Sequelize) => {
const Project = sequelize.define("project", {
title: {
  type: Sequelize.STRING
},
description: {
  type: Sequelize.STRING
},
releaseDate: {
  type: Sequelize.DATE
},
accessCode: {
  type: Sequelize.INTEGER
}
});

return Project;
};
 

Модель пользовательского проекта:

 const Project = require("./project.model.js");
const User = require("./user.model.js");

module.exports = (sequelize, Sequelize) => {
const UserProject = sequelize.define('userProject', {
userId: {
  type: Sequelize.INTEGER,
},
projectId: {
  type: Sequelize.INTEGER,
},
user_type: {
  type: Sequelize.INTEGER,
}
});

User.belongsToMany(Project, { through: UserProject });
Project.belongsToMany(User, { through: UserProject });

return UserProject;
};
 

Project Controller:

 const db = require("../models");
const Project = db.projects;
const User = db.users;
const Op = db.Sequelize.Op;

// Retrieve all Projects with User from the database.
exports.findAll = (req, res) => {

Project.findAll({ 
include: User
})
.then(data => {
  res.send(data);
})
.catch(err => {
  res.status(500).send({
    message:
      err.message || "Some error occurred while retrieving projects."
  });
});
};
 

Index.js:

 const dbConfig = require("../config/db.config.js");

const Sequelize = require("sequelize");
const sequelize = new Sequelize(dbConfig.DB, dbConfig.USER, dbConfig.PASSWORD, {
host: dbConfig.HOST,
dialect: dbConfig.dialect,
operatorsAliases: false,

pool: {
max: dbConfig.pool.max,
min: dbConfig.pool.min,
acquire: dbConfig.pool.acquire,
idle: dbConfig.pool.idle
}
});

const db = {};

db.Sequelize = Sequelize;
db.sequelize = sequelize;

db.projects = require("./project.model.js")(sequelize, Sequelize);
db.users = require("./user.model.js")(sequelize, Sequelize);
db.users_projects = require("./userProject.model.js")(sequelize, Sequelize);

module.exports = db;
 

Can someone tell me what am I missing? Thank you guys