ORM for javascript with sqlite3, oracle, mongodb
Use with node 12.9 or later for Promise.allSettled
1. Make your config in ./cfg/orm-conn-cfg.js
with:
module.exports = {
type: "sqlite3",
isDebug: true,
database: "../db/database/node-js-orm-demo-sqlite3.db",
hosts: [{ host: "localhost", port: 8080 }],
username: "test",
password: "test123",
pool: {
name: "Node-Orm-Pool",
max: 2,
min: 2,
increment: 0,
idle: 10000,
timeout: 4,
},
repSet: "rs0",
isRoot: true,
auto_increment_support: true,
}
2. install driver for db:
npm i sqlite3
npm i oracle
npm i mongodb
3. Use with json for define model:
let jsonData =
{
"Tên trường": {
"orm_data_type":"Kiểu dữ liệu",
"orm_length":"Độ dài dữ liệu",
"orm_not_null":"ràng buộc không null",
"orm_primary_key":"Khóa chính",
"orm_auto_increment":"Tự động tăng INTEGER",
"orm_is_unique":"là unique",
"orm_unique_multi":"là unique nhiều trường",
"orm_foreign_key":"Khóa ngoại lai với bảng",
"orm_default_value":"giá trị mặt định",
},
{
type: "INTEGER",
notNull: false,
primaryKey: true,
foreignKey: undefined,
autoIncrement: true,
isUnique: undefined,
uniqueMulti: undefined,
length: 100,
defaultValue: undefined
},
"field_name": {
"orm_data_type": "STRING",
"orm_not_null": "1",
"orm_unique_multi": "user_id,client_id",
"orm_foreign_key": "admin_user(id)",
"orm_default_value": "1",
"orm_length": "30",
"orm_auto_increment": "",
"orm_primary_key": "",
"orm_is_unique": "",
},
}
- Data types of this model:
STRING : kiểu chuỗi, text
INTEGER : kiểu số nguyên, đánh số
NUMBER : Kiểu số thập phân
BOOLEAN : kiểu logic 0,1
DATE : Kiểu ngày
DATETIME : Kiểu ngày giờ
TIMESTAMP : Kiểu mili giây
const {json2Model, Model} = require("./node-js-orm")
let jsonModel = json2Model(jsonData)
let model = new Model(db, tableName, jsonModel)
await model.sync();
let rslt = await model.create({
username: 'cuongdq'
});
let rst = await model.readAll({});
4. Use excel for define model. The sample in excel at sheet tables
. To make table with model.sync()
const connJsonCfg = require("../cfg/orm-mongodb-cfg")
const excelFile = `./db/excel/admin.users.friends.v4-migration.xlsx`
const { database, excell2Database } = require("../node-js-orm")
const db = new database.NodeDatabase(connJsonCfg);
const { waiting } = require("../utils");
waiting(20000, { hasData: () => db.isConnected() })
.then(async (timeoutMsg) => {
if (!timeoutMsg) {
let models = await excell2Database.createExcel2Models(db, excelFile)
console.log("KQ Tạo mô hình:", models.filter(x => x.getName() === "tables").map(x => x.getStructure())[0]);
let resultTable = await excell2Database.createExcel2Tables(models)
console.log("KQ tạo bảng:", resultTable);
let tableNames = ["admin_users"]
let resultImport = await excell2Database.importExcel2Database(models, excelFile, tableNames, 1)
console.log("KQ import dữ liệu:", resultImport);
}
});