Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Express.js i model MySQL + walidacja

Nie ma najlepszego sposobu na tworzenie modeli w oparciu o MySQL. Możesz zaimplementować własny sposób obsługi modeli, ale dla Node.js dostępnych jest wiele modułów ORM, sugeruję użycie jednego z nich.

Używam Sequelize jako ORM do definiowania modeli i interakcji z bazą danych w kilku aplikacjach Express. Innym ORM dla Node, z którym się spotkałem, jest Bookshelf.js , ale jest wiele innych. To, którego użyć, zależy od Twoich preferencji i potrzeb.

EDYCJA:Przykład użycia

Podczas korzystania z modeli Sequelize sugeruję następującą strukturę:katalog w twoim projekcie o nazwie modele z plikiem dla każdego modelu i plikiem index.js do ładowania środowiska Sequelize. Jeśli używasz Sequelize CLI , ma również kilka metod zgodnych z tą strukturą.

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;
};

Więcej parametrów i szczegółów znajdziesz w dokumencie Sequelize, który jest bardzo prosty i pełen przykładów i szczegółów.

Użyłem też trochę ECMAScript 6, więc zmień lub przetranspiluj ten kod, jeśli twoja wersja Node.js ich nie obsługuje.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Wstaw model Backbone.js do bazy danych MySQL

  2. Błąd MySQL:Nie można załadować wtyczki uwierzytelniania „caching_sha2_password”

  3. Użyj wp_query po zmianie bazy danych za pomocą nowego wpdb

  4. Policz liczbę unikalnych wartości

  5. Haszowanie lub szyfrowanie zmiennych do wysłania w adresie URL