Mysql
 sql >> Base de données >  >> RDS >> Mysql

Modèle Express.js et MySQL + validation

Il n'y a pas de meilleur moyen de créer des modèles basés sur MySQL. Vous pouvez implémenter votre propre façon de gérer les modèles, mais il existe de nombreux modules ORM disponibles pour Node.js, je suggérerais d'en utiliser un.

J'utilise Sequelize comme ORM pour définir des modèles et interagir avec la base de données dans plusieurs applications Express. Un autre ORM pour Node que j'ai rencontré est Bookshelf.js , mais il y en a bien d'autres. Lequel utiliser dépend de vos préférences et de vos besoins.

EDIT :Exemple d'utilisation

Je suggère la structure suivante lors de l'utilisation de modèles Sequelize :un répertoire dans votre projet nommé models avec un fichier pour chaque modèle et un fichier index.js pour charger l'environnement Sequelize. Si vous utilisez la Sequelize CLI , il a également plusieurs méthodes qui suivent cette structure.

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

Pour plus de paramètres et de détails, vous pouvez consulter la doc Sequelize, qui est très simple et pleine d'exemples et de détails.

De plus, j'ai utilisé du ECMAScript 6, alors modifiez ou transpilez ce code si votre version de Node.js ne les prend pas en charge.