Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Express.js và mô hình MySQL + xác thực

Không có cách tốt nhất để tạo mô hình dựa trên MySQL. Bạn có thể triển khai theo cách riêng của mình để xử lý các mô hình, nhưng có nhiều mô-đun ORM có sẵn cho Node.js, tôi khuyên bạn nên sử dụng một trong số đó.

Tôi sử dụng Sequelize dưới dạng ORM để xác định mô hình và tương tác với cơ sở dữ liệu trong một số ứng dụng Express. Một ORM khác cho Node mà tôi đã gặp là Bookshelf.js , nhưng có nhiều người khác. Chọn một cái để sử dụng tùy thuộc vào sở thích và nhu cầu của bạn.

CHỈNH SỬA:Ví dụ về cách sử dụng

Tôi đề xuất cấu trúc sau khi sử dụng mô hình Sequelize:một thư mục trong dự án của bạn có tên là các mô hình với một tệp cho mỗi mô hình và một tệp index.js để tải môi trường Sequelize. Nếu bạn sử dụng Sequelize CLI , nó cũng có một số phương thức tuân theo cấu trúc này.

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

Để biết thêm thông số và chi tiết, bạn có thể kiểm tra tài liệu Sequelize, tài liệu này rất đơn giản và đầy đủ các ví dụ và chi tiết.

Ngoài ra, tôi đã sử dụng một số ECMAScript 6, vì vậy hãy thay đổi hoặc chuyển mã này nếu phiên bản Node.js của bạn không hỗ trợ chúng.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Ai đó đã hack cơ sở dữ liệu của tôi - làm thế nào?

  2. Cách cải thiện hiệu suất truy vấn với nhiều JOIN

  3. Python 'float64' không thể được chuyển đổi thành loại MySQL nhưng trong truy vấn thủ công, không có vấn đề gì

  4. Cách tốt nhất để kết nối MySQL với PHP một cách an toàn

  5. Sử dụng truy vấn MySQL để duyệt qua các hàng để tạo một cây đệ quy