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.