sql >> Database teknologi >  >> RDS >> Mysql

Express.js og MySQL model + validering

Der er ingen bedste måde at lave modeller baseret på MySQL. Du kan implementere din egen måde at håndtere modeller på, men der er mange ORM-moduler tilgængelige til Node.js, jeg vil foreslå, at du bruger en af ​​dem.

Jeg bruger Sequelize som ORM til at definere modeller og interagere med databasen i flere Express-applikationer. En anden ORM for Node, som jeg er stødt på, er Bookshelf.js , men der er mange andre. Hvilken du skal bruge afhænger af dine præferencer og behov.

EDIT:Eksempel på brug

Jeg foreslår følgende struktur, når du bruger Sequelize-modeller:en mappe i dit projekt med navnet modeller med en fil for hver model og en index.js-fil til at indlæse Sequelize-miljøet. Hvis du bruger Sequelize CLI , den har også flere metoder, der følger denne 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;
};

For flere parametre og detaljer kan du tjekke Sequelize-dokumentet, som er meget enkelt og fyldt med eksempler og detaljer.

Jeg har også brugt noget ECMAScript 6, så skift eller transpilér denne kode, hvis din version af Node.js ikke understøtter dem.




  1. MariaDB NULLIF() Forklaret

  2. Dumping af datablokke

  3. Hvordan fjerner man linjeafstand mellem linjer i Textarea?

  4. Database Performance Tuning til MariaDB