Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Express.js dan model MySQL + validasi

Tidak ada cara terbaik untuk membuat model berdasarkan MySQL. Anda dapat menerapkan cara Anda sendiri untuk menangani model, tetapi ada banyak modul ORM yang tersedia untuk Node.js, saya sarankan menggunakan salah satunya.

Saya menggunakan Sekuel sebagai ORM untuk mendefinisikan model dan berinteraksi dengan database di beberapa aplikasi Express. ORM lain untuk Node yang saya temui adalah Bookshelf.js , tapi masih banyak yang lain. Yang mana yang akan digunakan tergantung pada preferensi dan kebutuhan Anda.

EDIT:Contoh penggunaan

Saya menyarankan struktur berikut saat menggunakan model Sequelize:direktori di proyek Anda bernama model dengan file untuk setiap model dan file index.js untuk memuat lingkungan Sequelize. Jika Anda menggunakan Sequelize CLI , ia juga memiliki beberapa metode yang mengikuti struktur ini.

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

Untuk parameter dan detail lebih lanjut, Anda dapat memeriksa dokumen Sequelize, yang sangat sederhana dan penuh dengan contoh dan detail.

Juga, saya telah menggunakan beberapa ECMAScript 6, jadi ubah atau ubah kode ini jika versi Node.js Anda tidak mendukungnya.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Akses basis data dengan Angular

  2. SQL:Cara melakukan string tidak sama

  3. beberapa kueri mySQL - mengembalikan kesalahan mysql_fetch_array

  4. PHP MYSQL -> Tampilkan tanggal yang disimpan sebagai tipe 'tanggal' dari Database MYSQL

  5. Sisipkan Tabel MySql jika tidak ada atau perbarui