Các nút ORM hàng đầu

github. com

ORM — Ánh xạ quan hệ đối tượng

Ánh xạ quan hệ đối tượng (công cụ ánh xạ ORM, O/RM và O/R) trong khoa học máy tính là một kỹ thuật lập trình để chuyển đổi dữ liệu giữa các hệ thống loại không tương thích bằng ngôn ngữ lập trình hướng đối tượng. Trên thực tế, điều này tạo ra một “cơ sở dữ liệu đối tượng ảo” có thể được sử dụng từ bên trong ngôn ngữ lập trình. Có sẵn cả gói thương mại và miễn phí để thực hiện ánh xạ quan hệ đối tượng, mặc dù một số lập trình viên chọn xây dựng các công cụ ORM của riêng họ

Chọn ORM cho API

Chọn ORM hoặc trình tạo truy vấn cho Nút của bạn. ứng dụng js có thể khó khăn. Có nhiều thư viện khác nhau cho phép bạn truy vấn và thao tác dữ liệu từ ứng dụng JavaScript của mình và mỗi thư viện khác nhau về thiết kế và mức độ trừu tượng

Ưu điểm của việc sử dụng ORM
  • Họ viết các truy vấn SQL chính xác và được tối ưu hóa, do đó loại bỏ rắc rối cho các nhà phát triển
  • Chúng làm cho mã dễ cập nhật, bảo trì và tái sử dụng hơn khi nhà phát triển có thể nghĩ ra và thao tác dữ liệu dưới dạng đối tượng
  • ORM sẽ bảo vệ ứng dụng của bạn khỏi các cuộc tấn công SQL injection vì framework sẽ lọc dữ liệu cho bạn
  • ORM cung cấp khái niệm Trừu tượng hóa cơ sở dữ liệu giúp chuyển đổi cơ sở dữ liệu dễ dàng hơn và tạo cơ sở mã nhất quán cho ứng dụng của bạn
Hãy nói về tất cả các ORM này

Prisma và Prisma khác nhau như thế nào

Để trả lời câu hỏi một cách ngắn gọn. Có, Prisma là một loại ORM mới về cơ bản khác với các ORM truyền thống và không gặp phải nhiều vấn đề thường liên quan đến các loại này

Các ORM truyền thống cung cấp một cách hướng đối tượng để làm việc với cơ sở dữ liệu quan hệ bằng cách ánh xạ các bảng tới các lớp mô hình trong ngôn ngữ lập trình của bạn. Cách tiếp cận này dẫn đến nhiều vấn đề gây ra bởi sự không phù hợp trở kháng quan hệ đối tượng

Prisma hoạt động khác cơ bản so với cái đó. Với Prisma, bạn xác định các mô hình của mình trong lược đồ Prisma khai báo đóng vai trò là nguồn sự thật duy nhất cho lược đồ cơ sở dữ liệu của bạn và các mô hình trong ngôn ngữ lập trình của bạn. Trong mã ứng dụng của bạn, sau đó bạn có thể sử dụng Prisma Client để đọc và ghi dữ liệu trong cơ sở dữ liệu của mình theo cách an toàn kiểu mà không cần quản lý các phiên bản mô hình phức tạp. Điều này làm cho quá trình truy vấn dữ liệu trở nên tự nhiên hơn cũng như dễ đoán hơn vì Prisma Client luôn trả về các đối tượng JavaScript đơn giản

Trong bài viết này, bạn sẽ tìm hiểu chi tiết hơn về các mẫu ORM và quy trình công việc, cách Prisma triển khai mẫu Data Mapper và lợi ích của phương pháp tiếp cận của Prisma

Knex

Trình tạo truy vấn SQL linh hoạt, di động và thú vị khi sử dụng

Trình tạo truy vấn đa phương ngữ, bao gồm pin (MSSQL, MySQL, PostgreSQL, SQLite3, Oracle (bao gồm cả Xác thực ví Oracle)) cho Node. js, nổi bật

import { Knex, knex } from 'knex'interface User {
id: number;
age: number;
name: string;
active: boolean;
departmentId: number;
}
const config: Knex.Config = {
client: 'sqlite3',
connection: {
filename: './data.db',
},
};
const knexInstance = knex(config);try {
const users = await knex('users').select('id', 'age');
} catch (err) {
// error handling
}
Phần tiếp theo

Sequelize là một ORM dựa trên lời hứa cho Node. js và io. js. Nó hỗ trợ các phương ngữ PostgreSQL, MySQL, MariaDB, SQLite và MSSQL và có tính năng hỗ trợ giao dịch vững chắc, quan hệ, sao chép đọc và hơn thế nữa

Cài đặt

// Example usage
var Sequelize = require('sequelize');
var sequelize = new Sequelize('database', 'username', 'password');
var User = sequelize.define('user', {
username: Sequelize.STRING,
birthday: Sequelize.DATE
});
sequelize.sync().then(function() {
return User.create({
username: 'janedoe',
birthday: new Date(1980, 6, 20)
});
}).then(function(jane) {
console.log(jane.get({
plain: true
}));
});

Phần tiếp theo có sẵn thông qua NPM

cài đặt $ npm — lưu phần tiếp theo

Và một trong những điều sau đây.
$ npm install --save pg pg-hstore
$ npm install --save mysql // For both mysql and mariadb dialects
$ npm install --save sqlite3
$ npm install --save tedious // MSSQL

Thiết lập kết nối

Sequelize sẽ thiết lập một nhóm kết nối khi khởi tạo, do đó, lý tưởng nhất là bạn chỉ nên tạo một phiên bản cho mỗi cơ sở dữ liệu

var sequelize = new Sequelize('database', 'username', 'password', {
host: 'localhost',
dialect: 'mysql'|'mariadb'|'sqlite'|'postgres'|'mssql',
pool: {
max: 5,
min: 0,
idle: 10000
},
// SQLite only
storage: 'path/to/database.sqlite'
});
// Or you can simply use a connection uri
var sequelize = new Sequelize('postgres://user:[email protected]:5432/dbname');
LoạiORM

TypeORM là một ORM có thể chạy trong các nền tảng NodeJS, Browser, Cordova, PhoneGap, Ionic, React Native, NativeScript, Expo và Electron và có thể được sử dụng với TypeScript và JavaScript (ES5, ES6, ES7, ES8). Mục tiêu của nó là luôn hỗ trợ các tính năng JavaScript mới nhất và cung cấp các tính năng bổ sung giúp bạn phát triển bất kỳ loại ứng dụng nào sử dụng cơ sở dữ liệu — từ ứng dụng nhỏ với một vài bảng đến ứng dụng doanh nghiệp quy mô lớn với nhiều cơ sở dữ liệu

TypeORM hỗ trợ cả các mẫu Bản ghi hoạt động và Trình ánh xạ dữ liệu, không giống như tất cả các ORM JavaScript khác hiện đang tồn tại, điều đó có nghĩa là bạn có thể viết các ứng dụng chất lượng cao, liên kết lỏng lẻo, có thể mở rộng, có thể bảo trì theo cách hiệu quả nhất

TypeORM bị ảnh hưởng nhiều bởi các ORM khác, chẳng hạn như Hibernate, Doctrine và Entity Framework

Với TypeORM, các mô hình của bạn trông như thế này

import { Entity, PrimaryGeneratedColumn, Column } from "typeorm";@Entity()
export class User {
@PrimaryGeneratedColumn()
id: number;
@Column()
firstName: string;
@Column()
lastName: string;
@Column()
age: number;
}

Và logic tên miền của bạn trông như thế này

const repository = connection.getRepository(User);const user = new User();
user.firstName = "Timber";
user.lastName = "Saw";
user.age = 25;
await repository.save(user);
const allUsers = await repository.find();
const firstUser = await repository.findOne(1); // find by id
const timber = await repository.findOne({ firstName: "Timber", lastName: "Saw" });
await repository.remove(timber);

Cài đặt

Cài đặt gói npm

npm install typeorm --save
# You need to install reflect-metadata shim:
npm install reflect-metadata --save
#and import it somewhere in the global place of your app (for example in app.ts):
import "reflect-metadata";
#You may need to install node typings:
npm install @types/node --save-dev
Thiết lập Prisma

Prisme là gì?

Prisma là một ORM thế hệ tiếp theo bao gồm các công cụ này

  • Khách hàng Prisma. Trình tạo truy vấn an toàn loại và được tạo tự động cho Node. js & TypeScript
  • Di chuyển Prisma. Hệ thống di chuyển và mô hình hóa dữ liệu khai báo
  • Xưởng Prisma. GUI để xem và chỉnh sửa dữ liệu trong cơ sở dữ liệu của bạn

Prisma Client có thể được sử dụng trong bất kỳ Node nào. js hoặc ứng dụng phụ trợ TypeScript (bao gồm cả ứng dụng serverless và vi dịch vụ). Đây có thể là API REST, API GraphQL, API gRPC hoặc bất kỳ thứ gì khác cần cơ sở dữ liệu

Bạn đang tìm kiếm Prisma 1?

Bắt đầu

Cách nhanh nhất để bắt đầu với Prisma là làm theo Quickstart (5 phút)

Quickstart dựa trên cơ sở dữ liệu SQLite được cấu hình sẵn. Bạn cũng có thể bắt đầu với cơ sở dữ liệu của riêng mình (PostgreSQL và MySQL) bằng cách làm theo một trong những hướng dẫn sau

  • Thêm Prisma vào một dự án hiện có
  • Thiết lập một dự án mới với Prisma từ đầu

Prisma hoạt động như thế nào

Phần này cung cấp tổng quan cấp cao về cách thức hoạt động của Prisma và các thành phần kỹ thuật quan trọng nhất của nó. Để được giới thiệu kỹ lưỡng hơn, hãy truy cập tài liệu Prisma

Lược đồ Prisma

Mọi dự án sử dụng công cụ từ bộ công cụ Prisma đều bắt đầu bằng tệp lược đồ Prisma. Lược đồ Prisma cho phép các nhà phát triển xác định các mô hình ứng dụng của họ bằng ngôn ngữ lập mô hình dữ liệu trực quan. Nó cũng chứa kết nối đến cơ sở dữ liệu và định nghĩa một trình tạo

________số 8

Trong lược đồ này, bạn cấu hình ba điều

  • Nguồn dữ liệu. Chỉ định kết nối cơ sở dữ liệu của bạn (thông qua một biến môi trường)
  • Máy phát điện. Cho biết bạn muốn tạo Prisma Client
  • Mô hình dữ liệu. Xác định các mô hình ứng dụng của bạn

Mô hình dữ liệu Prisma

Trên trang này, trọng tâm là mô hình dữ liệu. Bạn có thể tìm hiểu thêm về Nguồn dữ liệu và Trình tạo trên các trang tài liệu tương ứng

Chức năng của các mô hình Prisma

Mô hình dữ liệu là một tập hợp các. Một mô hình có hai chức năng chính

  • Đại diện cho một bảng trong cơ sở dữ liệu cơ bản
  • Cung cấp nền tảng cho các truy vấn trong Prisma Client API

Lấy một mô hình dữ liệu

Có hai quy trình công việc chính để “đưa” một mô hình dữ liệu vào lược đồ Prisma của bạn

  • Tạo mô hình dữ liệu từ nội quan cơ sở dữ liệu
  • Viết thủ công mô hình dữ liệu và ánh xạ nó vào cơ sở dữ liệu bằng Prisma Migrate

Sau khi mô hình dữ liệu được xác định, bạn có thể tạo Máy khách Prisma sẽ hiển thị CRUD và nhiều truy vấn hơn cho các mô hình đã xác định. Nếu bạn đang sử dụng TypeScript, bạn sẽ nhận được loại an toàn đầy đủ cho tất cả các truy vấn (ngay cả khi chỉ truy xuất các tập hợp con của các trường của mô hình)

Tạo máy khách Prisma

Bước đầu tiên khi sử dụng Prisma Client là cài đặt gói npm của nó

npm install @prisma/client

Lưu ý rằng việc cài đặt gói này sẽ gọi lệnh

// Example usage
var Sequelize = require('sequelize');
var sequelize = new Sequelize('database', 'username', 'password');
var User = sequelize.define('user', {
username: Sequelize.STRING,
birthday: Sequelize.DATE
});
sequelize.sync().then(function() {
return User.create({
username: 'janedoe',
birthday: new Date(1980, 6, 20)
});
}).then(function(jane) {
console.log(jane.get({
plain: true
}));
});
8 để đọc lược đồ Prisma của bạn và tạo mã Máy khách Prisma. Mã này sẽ nằm trong
// Example usage
var Sequelize = require('sequelize');
var sequelize = new Sequelize('database', 'username', 'password');
var User = sequelize.define('user', {
username: Sequelize.STRING,
birthday: Sequelize.DATE
});
sequelize.sync().then(function() {
return User.create({
username: 'janedoe',
birthday: new Date(1980, 6, 20)
});
}).then(function(jane) {
console.log(jane.get({
plain: true
}));
});
9, được xuất bởi
$ npm install --save pg pg-hstore
$ npm install --save mysql // For both mysql and mariadb dialects
$ npm install --save sqlite3
$ npm install --save tedious // MSSQL
0

Sau khi bạn thay đổi mô hình dữ liệu của mình, bạn sẽ cần tạo lại Prisma Client theo cách thủ công để đảm bảo mã bên trong

// Example usage
var Sequelize = require('sequelize');
var sequelize = new Sequelize('database', 'username', 'password');
var User = sequelize.define('user', {
username: Sequelize.STRING,
birthday: Sequelize.DATE
});
sequelize.sync().then(function() {
return User.create({
username: 'janedoe',
birthday: new Date(1980, 6, 20)
});
}).then(function(jane) {
console.log(jane.get({
plain: true
}));
});
9 được cập nhật

// Example usage
var Sequelize = require('sequelize');
var sequelize = new Sequelize('database', 'username', 'password');
var User = sequelize.define('user', {
username: Sequelize.STRING,
birthday: Sequelize.DATE
});
sequelize.sync().then(function() {
return User.create({
username: 'janedoe',
birthday: new Date(1980, 6, 20)
});
}).then(function(jane) {
console.log(jane.get({
plain: true
}));
});
4

Tham khảo tài liệu để biết thêm thông tin về "tạo ứng dụng khách Prisma"

Sử dụng Prisma Client để gửi truy vấn đến cơ sở dữ liệu của bạn

Sau khi Máy khách Prisma được tạo, bạn có thể nhập mã của mình và gửi truy vấn đến cơ sở dữ liệu của mình. Đây là mã thiết lập trông như thế nào

Nhập và khởi tạo Prisma Client

Bạn có thể nhập và khởi tạo Prisma Client như sau

// Example usage
var Sequelize = require('sequelize');
var sequelize = new Sequelize('database', 'username', 'password');
var User = sequelize.define('user', {
username: Sequelize.STRING,
birthday: Sequelize.DATE
});
sequelize.sync().then(function() {
return User.create({
username: 'janedoe',
birthday: new Date(1980, 6, 20)
});
}).then(function(jane) {
console.log(jane.get({
plain: true
}));
});
0

hoặc

// Example usage
var Sequelize = require('sequelize');
var sequelize = new Sequelize('database', 'username', 'password');
var User = sequelize.define('user', {
username: Sequelize.STRING,
birthday: Sequelize.DATE
});
sequelize.sync().then(function() {
return User.create({
username: 'janedoe',
birthday: new Date(1980, 6, 20)
});
}).then(function(jane) {
console.log(jane.get({
plain: true
}));
});
1

Bây giờ, bạn có thể bắt đầu gửi truy vấn thông qua API ứng dụng khách Prisma đã tạo, đây là một số truy vấn mẫu. Lưu ý rằng tất cả các truy vấn của Máy khách Prisma đều trả về các đối tượng JavaScript cũ đơn giản

Tìm hiểu thêm về các thao tác khả dụng trong tài liệu Prisma Client hoặc xem video demo này (2 phút)

Truy xuất tất cả các bản ghi

$ npm install --save pg pg-hstore
$ npm install --save mysql // For both mysql and mariadb dialects
$ npm install --save sqlite3
$ npm install --save tedious // MSSQL
2 từ cơ sở dữ liệu

// Example usage
var Sequelize = require('sequelize');
var sequelize = new Sequelize('database', 'username', 'password');
var User = sequelize.define('user', {
username: Sequelize.STRING,
birthday: Sequelize.DATE
});
sequelize.sync().then(function() {
return User.create({
username: 'janedoe',
birthday: new Date(1980, 6, 20)
});
}).then(function(jane) {
console.log(jane.get({
plain: true
}));
});
2

Bao gồm quan hệ

$ npm install --save pg pg-hstore
$ npm install --save mysql // For both mysql and mariadb dialects
$ npm install --save sqlite3
$ npm install --save tedious // MSSQL
3 trên mỗi đối tượng
$ npm install --save pg pg-hstore
$ npm install --save mysql // For both mysql and mariadb dialects
$ npm install --save sqlite3
$ npm install --save tedious // MSSQL
2 được trả về

// Example usage
var Sequelize = require('sequelize');
var sequelize = new Sequelize('database', 'username', 'password');
var User = sequelize.define('user', {
username: Sequelize.STRING,
birthday: Sequelize.DATE
});
sequelize.sync().then(function() {
return User.create({
username: 'janedoe',
birthday: new Date(1980, 6, 20)
});
}).then(function(jane) {
console.log(jane.get({
plain: true
}));
});
3

Lọc tất cả bản ghi

$ npm install --save pg pg-hstore
$ npm install --save mysql // For both mysql and mariadb dialects
$ npm install --save sqlite3
$ npm install --save tedious // MSSQL
5 có chứa
$ npm install --save pg pg-hstore
$ npm install --save mysql // For both mysql and mariadb dialects
$ npm install --save sqlite3
$ npm install --save tedious // MSSQL
6

// Example usage
var Sequelize = require('sequelize');
var sequelize = new Sequelize('database', 'username', 'password');
var User = sequelize.define('user', {
username: Sequelize.STRING,
birthday: Sequelize.DATE
});
sequelize.sync().then(function() {
return User.create({
username: 'janedoe',
birthday: new Date(1980, 6, 20)
});
}).then(function(jane) {
console.log(jane.get({
plain: true
}));
});
4

Tạo bản ghi

$ npm install --save pg pg-hstore
$ npm install --save mysql // For both mysql and mariadb dialects
$ npm install --save sqlite3
$ npm install --save tedious // MSSQL
2 mới và bản ghi
$ npm install --save pg pg-hstore
$ npm install --save mysql // For both mysql and mariadb dialects
$ npm install --save sqlite3
$ npm install --save tedious // MSSQL
5 mới trong cùng một truy vấn

// Example usage
var Sequelize = require('sequelize');
var sequelize = new Sequelize('database', 'username', 'password');
var User = sequelize.define('user', {
username: Sequelize.STRING,
birthday: Sequelize.DATE
});
sequelize.sync().then(function() {
return User.create({
username: 'janedoe',
birthday: new Date(1980, 6, 20)
});
}).then(function(jane) {
console.log(jane.get({
plain: true
}));
});
5

Cập nhật bản ghi

$ npm install --save pg pg-hstore
$ npm install --save mysql // For both mysql and mariadb dialects
$ npm install --save sqlite3
$ npm install --save tedious // MSSQL
5 hiện có

// Example usage
var Sequelize = require('sequelize');
var sequelize = new Sequelize('database', 'username', 'password');
var User = sequelize.define('user', {
username: Sequelize.STRING,
birthday: Sequelize.DATE
});
sequelize.sync().then(function() {
return User.create({
username: 'janedoe',
birthday: new Date(1980, 6, 20)
});
}).then(function(jane) {
console.log(jane.get({
plain: true
}));
});
6

https. //www. lăng trụ. io/docs/bắt đầu/thiết lập-prisma/bắt đầu từ đầu-typescript-postgres

ghi chú
  • danh sách phát đầy đủ sắp có trên các ORM này với Node JS
  • https. //www. youtube. com/watch?v=riTpEByIPAI&list=PLIGDNOJWiL18aYxcuxbDheTFs4v2rosBf
Thẩm quyền giải quyết

ORM. Suy nghĩ lại về dữ liệu dưới dạng đối tượng

Object-Relational Mapping (ORM) là một kỹ thuật cho phép bạn truy vấn và thao tác dữ liệu từ cơ sở dữ liệu bằng…

Blog. ngả vàng. com

Prisma - Nút thế hệ tiếp theo. js và TypeScript ORM cho cơ sở dữ liệu

Trọng tâm của Prisma là lược đồ - một cách khai báo để xác định các mô hình dữ liệu của ứng dụng và mối quan hệ của chúng…

www. lăng trụ. io

phần tiếp theo

Sequelize là một Node dựa trên lời hứa. js ORM cho Postgres, MySQL, MariaDB, SQLite và Microsoft SQL Server. Nó có tính năng…

sắp xếp lại. tổ chức

Phần kết luận

Cuối cùng, đó là lựa chọn của nhà phát triển nếu họ chỉ muốn sử dụng ORM hoặc ORM cho Di chuyển và trình tạo. Tôi vẫn có quan điểm khác về việc sử dụng ORM, tôi muốn đơn giản hóa với trình tạo truy vấn như knex js và viết các truy vấn thô phức tạp tùy chỉnh của bạn. ORM chỉ là các lớp trên giao diện máy khách cơ sở dữ liệu của bạn, chúng có thể trở nên phức tạp đối với cấu trúc dữ liệu phức tạp và luôn có giới hạn khi chúng tôi sử dụng ORM

ORM nào tốt nhất cho NodeJS?

Các ORM TypeScript tốt nhất. Phản đối. js . ứng dụng js. Nó cung cấp tất cả các lợi ích của trình tạo truy vấn SQL và một bộ API mạnh mẽ để làm việc với cơ sở dữ liệu quan hệ. Thật vậy, có thể nói Objection là một công cụ xây dựng truy vấn quan hệ.

Khung ORM nào là tốt nhất?

Hibernate, Sequelize, Entity Framework, SQLAlchemy và Dapper là những công cụ phổ biến nhất trong danh mục "Trình ánh xạ quan hệ đối tượng (ORM)". "ORM dễ dàng" là lý do chính khiến các nhà phát triển chọn Hibernate thay vì các đối thủ cạnh tranh, trong khi "ORM tốt cho nút. js" là lý do Sequelize được chọn.

Có ORM cho nút JS không?

TypeORM là một ORM có thể chạy trong các nền tảng NodeJS , Browser, Cordova, PhoneGap, Ionic, React Native, NativeScript, Expo và Electron và có thể được sử dụng với TypeScript và JavaScript .

ORM mysql tốt nhất cho nút JS là gì?

11 nút hàng đầu. .
LoạiORM
cầy mangut
Giá sách. js
Sự phản đối. js
Dòng nước
Knex. js (Trình tạo truy vấn)
Các thư viện đáng chú ý khác
Tóm lược