Mysql
 sql >> база данни >  >> RDS >> Mysql

Express.js и MySQL модел + валидиране

Няма най-добрия начин за създаване на модели на базата на MySQL. Можете да приложите свой собствен начин за работа с модели, но има много ORM модули, налични за Node.js, бих предложил да използвате един от тях.

Използвам Sequelize като ORM за дефиниране на модели и взаимодействие с базата данни в няколко Express приложения. Друг ORM за Node, с който се сблъсках, е Bookshelf.js , но има много други. Кой да използвате зависи от вашите предпочитания и нужди.

РЕДАКТИРАНЕ:Пример за употреба

Предлагам следната структура, когато използвате модели Sequelize:директория във вашия проект с име модели с файл за всеки модел и файл index.js за зареждане на средата на Sequelize. Ако използвате Sequelize CLI , също има няколко метода, които следват тази структура.

index.js

const fs = require("fs");
const path = require("path");
const Sequelize = require("sequelize");
let sqize = new Sequelize({
  host     : "1.2.3.4",
  port     : 1234,
  database : "testDb",
  username : "pino",
  password : "[email protected]",
  dialect: 'mysql',
});

fs.readdirSync(__dirname).filter(function(file) {
  return (file.indexOf(".") !== 0) && (file !== "index.js");
}).forEach(function(file) {
  let model = sequelize.import(path.join(__dirname, file));
  db[model.name] = model;
});

Object.keys(db).forEach(function(modelName) {
  if ("associate" in db[modelName]) {
    db[modelName].associate(db);
  }
});

db.sequelize = sequelize;
db.Sequelize = Sequelize;
db.op        = Sequelize.Op;

module.exports = {
  sqize: sqize,
  Sequelize: Sequelize,
  op: Sequelize.Op
};

users.js

module.exports = function (sequelize, DataTypes) {
  let users = sequelize.define('users', {
    username: {
      type: DataTypes.STRING(255),
      allowNull: true
    },
    firstname: {
      type: DataTypes.STRING(255),
      allowNull: true
    },
    secondname: {
      type: DataTypes.STRING(255),
      allowNull: true
    },
    email: {
      type: DataTypes.STRING(255),
      allowNull: true
    },
    type: {
      type: DataTypes.INTEGER(4),
      allowNull: true,
      references: {
        model: 'users_type',
        key: 'id'
      }
    },
    password: {
      type: DataTypes.STRING(255),
      allowNull: true
    },
    salt: {
      type: DataTypes.STRING(255),
      allowNull: true
    }
  }, {
    tableName: 'users'
  });

  users.associate = function (models) {
    users.belongsTo(models.user_types, {
      foreignKey: "type",
      as: "userType"
    });
    users.hasMany(models.user_logs, {
      foreignKey: "user_id",
      as: "userLogs"
    });
  };

  return users;
};

За повече параметри и подробности можете да проверите документа Sequelize, който е много прост и пълен с примери и подробности.

Освен това използвах ECMAScript 6, така че променете или транспилирайте този код, ако вашата версия на Node.js не ги поддържа.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Проблем с кодирането на символи

  2. mysql:ефективен начин за търсене с постфикс (като '%text', известен още като заместващ знак за префикс)?

  3. Заобикаляне на MySQL Грешка не може да се отвори отново

  4. Топ 50 въпроса за интервю за MySQL, които трябва да подготвите през 2022 г

  5. Как да запазя стойностите на колона уникални в MySQL?