Tôi nên sử dụng ORM nào cho Node.js và MySQL? [đóng cửa]


326

Tôi đang viết lại một dự án để sử dụng Node.js. Tôi muốn tiếp tục sử dụng MySQL làm DB (mặc dù tôi không ngại viết lại lược đồ). Tôi đang tìm kiếm một ORM đơn giản, hiệu suất hợp lý, hỗ trợ bộ nhớ đệm, quan hệ nhiều-một và nhiều-nhiều. Từ ORMs MySQL tôi có thể tìm, persistencejssequelize dường như hầu hết trưởng thành. Bạn có kinh nghiệm với một trong hai? Những ưu và nhược điểm liên quan tôi nên biết trong quyết định của mình là gì?


Nhưng đó là một chủ đề rất thú vị. Bạn có muốn có quyền truy cập vào các nhà phát triển bên thứ ba để thay đổi dữ liệu trên trang web của mình không? Có thể là ý tưởng tốt hơn để tạo thư viện js trung gian gửi tham số yêu cầu (ngôn ngữ meta) đến phụ trợ không?
sergzach

2
@sergzach Chăm sóc công phu? Google cho "bộ nhớ đệm ngủ đông".
ponzao

Hừm ... Một số trang web cho phép ứng dụng người dùng. Hoặc tôi không hiểu bạn, xin lỗi.
sergzach

2
@sergzach: Bộ nhớ đệm thực sự là một tính năng khá chính của một số giải pháp ORM. Nhìn vào Cayenne chẳng hạn.
Nate CK

Câu trả lời:


101

Tôi có thể đề nghị ORM Node không?

https://github.com/dresende/node-orm2

Có tài liệu về Readme, hỗ trợ MySQL, PostgreSQL và SQLite.

MongoDB có sẵn kể từ phiên bản 2.1.x (phát hành vào tháng 7 năm 2013)

CẬP NHẬT: Gói này không còn được duy trì, theo README của dự án. Nó thay vì khuyến kệ sáchsequelize


27
Dựa trên các tài liệu, có vẻ như Sequelize đang đi trước dự án này.
Tony O'Hagan

Đó là một lựa chọn tuyệt vời khác cho những người tìm kiếm mysql ORM. Cú pháp phức tạp hơn, nhưng cũng đẹp.
dresende

2
dự án đã thay đổi URL: github.com/dresende/node-orm2
Capy

Tôi gặp lỗi này "Lỗi: Không thể tìm thấy mô-đun 'mũ'" khi tôi cố gắng triển khai điều này. .. không có số lượng cài đặt npm hoặc cài đặt lại dường như có ích. Bất kỳ đề xuất? Cảm ơn
Gene Bo

1
Nút-orm2 không còn được duy trì tích cực. Nó liên kết để sắp xếp lại và bookshelf.js.
seebcakes

150

Tôi sẽ chọn Sequelize vì nó là tài liệu tuyệt vời. Đó chỉ là một ý kiến ​​trung thực (tôi chưa bao giờ thực sự sử dụng MySQL với Node nhiều như vậy).


10
Tôi cũng muốn chỉ ra rằng nút-orm2 hoặc continence.js không cung cấp cơ chế di chuyển. kiên trì.js không hỗ trợ postgres. sequelize làm cả hai điều này.
airtonix

4
Tôi đã sử dụng nút-orm2 và do tài liệu tốt hơn của Sequelize, tôi có thể lấy nó lên và chạy dễ dàng hơn nhiều
Michael J. Calkins

2
@Gelidus Bạn lấy thông tin này ở đâu?
William Lepinski

14
Đáng buồn thay, tài liệu Sequelize gần đây đã trở nên khủng khiếp. Tôi bắt đầu sử dụng Sequelize gần đây và khá hài lòng bởi các tài liệu. Bây giờ, đó là một đống các liên kết bị hỏng tự động, thông tin lỗi thời và các ví dụ không đầy đủ. Tôi vẫn sẽ gắn bó với nó mặc dù. Nó không khó để học.
Brad

2
Chỉ cần xóa nhận xét cũ của tôi và bây giờ tôi đồng ý 100% với @Brad, thật không may :(
Andrey Popov

19

Trước hết, xin lưu ý rằng tôi chưa sử dụng một trong số họ (nhưng đã sử dụng Node.js).

Cả hai thư viện đều được ghi lại khá tốt và có API ổn định. Tuy nhiên, dường như Persence.js được sử dụng trong nhiều dự án hơn . Tôi không biết nếu tất cả trong số họ vẫn sử dụng nó, mặc dù.

Nhà phát triển của sequelize đôi khi blog về nó tại blog.depold.com . Khi bạn muốn sử dụng khóa chính làm khóa ngoại, bạn sẽ cần bản vá được mô tả trong bài đăng trên blog này . Nếu bạn muốn trợ giúp cho kiên trì.js, có một nhóm google dành cho nó.

Từ các ví dụ tôi thu thập được, phần tiếp theo đó giống một chút JavaScript (nhiều đường hơn) so với continance.js nhưng có hỗ trợ cho ít kho dữ liệu hơn (chỉ MySQL, trong khi đó, Persance.js thậm chí có thể sử dụng các cửa hàng trong trình duyệt).

Tôi nghĩ rằng phần tiếp theo có thể là cách phù hợp với bạn, vì bạn chỉ cần hỗ trợ MySQL. Tuy nhiên, nếu bạn cần một số tính năng tiện lợi (ví dụ như tìm kiếm) hoặc muốn sử dụng một cơ sở dữ liệu khác sau này, bạn cần sử dụng bền vững.js.


1
có vẻ như kiên
trìjs.org

10

Một điểm khác biệt chính giữa Sequelize và Persistence.js là cái trước hỗ trợ STRINGkiểu dữ liệu, tức là VARCHAR(255). Tôi cảm thấy thực sự không thoải mái khi làm mọi thứ TEXT.


7
Hiện tại Persistence.js cũng hỗ trợ VARCHAR.
alehro

8
Trong các cơ sở dữ liệu như PostgreSQL, TEXT và VARCHAR hoàn toàn giống nhau, sự khác biệt duy nhất là nếu bạn đặt giới hạn byte (VARCHAR (255)) thì bạn có một chi phí để kiểm tra giới hạn. Hoàn toàn không có vấn đề gì trong việc sử dụng TEXT cho mọi thứ trong PostgreSQL.
viết lại

3
Sử dụng TEXT trong PostgreSQL thực sự là cách tốt hơn, ngay cả khi nó không khả dụng.
cowbert
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.