2011-11-22 23 views
14

Tôi cần sử dụng Node.js, nhưng nó không có ORM tốt cho MySQL. Vì vậy, tôi đang lập kế hoạch sử dụng SQLAlchemy để xác định lược đồ của tôi. Và sau đó sử dụng nút-mysql để làm các truy vấn cấp thấp (tất nhiên, tôi sẽ không thể sử dụng ngôn ngữ truy vấn của SQLAlchemy coz trong python.)Node.js không có ORM tốt để quản lý lược đồ/di chuyển MySQL ... vì vậy tôi có thể sử dụng SQLAlchemy để quản lý nó không?

Các bạn nghĩ sao?

sequelize dường như là tốt nhất ... nhưng dường như không có nhiều người đang sử dụng. Ngoài ra, những gì về di cư? Tôi sẽ xử lý như thế nào?

node-orm dường như cũng không hoạt động.

Suy nghĩ về điều này?

+0

Tóm tắt tốt ở đây: http://www.quora.com/Database-Migrations/What-are-my-options-for-SQL-database-migrations -with-Node-js – vaughan

+0

https://bitbucket.org/zzzeek/alembic sẽ là thư viện để sử dụng. Được viết bởi tác giả của SQLAlchemy. – vaughan

Trả lời

8

Sequelize là ORM khá tốt cho MySQL và có tài liệu tuyệt vời. Bạn có thể sử dụng node-migrate để di chuyển.

+0

Câu trả lời này đã lỗi thời. Phần tiếp theo có chức năng di chuyển ngay bây giờ. Nhưng nó bị hỏng cho việc di chuyển lược đồ hoàn tác và khá hạn chế. – vaughan

+15

Tôi không đồng ý rằng phần tiếp theo là một ORM khá tốt – sports

+7

Tôi chỉ muốn Sequelize ít ma thuật hơn. Tôi muốn các đối tượng JavaScript đơn giản. Bạn thậm chí không thể sử dụng 'prototype' trên 'classes' mà Sequelize tạo ra. Bạn phải sử dụng ma thuật 'instanceMethods' của nó. JS là đủ chức năng, bạn không cần phải làm điều đó. – d11wtq

5

Chúng tôi đang sử dụng Sequelize.js trong dự án Node của chúng tôi và tôi đoán việc này đã hoàn thành công việc nhưng có nhiều công việc. Một ví dụ là công cụ truy vấn MySQL Sequelize thực hiện đối sánh chuỗi trường hợp nhạy cảm trên chuỗi SQL mà bạn nạp nó (this.sql.indexOf ('SELECT') == 0). Điều này có nghĩa là nó có thể thất bại nếu SQL của bạn xảy ra là chữ thường. Các từ khóa SQL are usually case insensitive (mặc dù trường hợp trên theo quy ước) do đó việc triển khai thực hiện Sequelize có vẻ như là một hack.

Có hỗ trợ di chuyển trong Phần tiếp theo kể từ phiên bản 1.3.0 nhưng tôi chưa sử dụng và tôi đang xem xét việc tự thay mình.

Tôi đến từ một nền tảng của việc sử dụng Ruby ActiveRecord ORM và trong ánh sáng của điều này và gotcha đã đề cập ở trên Tôi là do dự để khuyên bạn nên Sequelize. Thật không may, tôi không biết những lựa chọn thay thế tốt hơn là ở đó.

CẬP NHẬT 1: có các ORM khác được đề xuất theo "Which ORM should I use for Node.js and MySQL?".

UPDATE2: Tôi đã phát hành mã di cư Sequelize.js tôi on Github

0

Bạn có thể sử dụng light-ormmysql:

  1. https://npmjs.org/package/light-orm - ORM bao bọc
  2. https://npmjs.org/package/mysql - người lái

B ookshelf.js cũng khá tốt, nhưng, ở một số khía cạnh, không linh hoạt. Ví dụ, bạn không thể thực thi yêu cầu SQL và chuyển đổi kết quả thành các mô hình. Vì vậy, sử dụng ánh sáng-orm.

0

Gần đây tôi đã tạo mysql-orm hoàn toàn có thể sử dụng được, mặc dù có một chặng đường dài để đi trước khi tôi hoàn toàn hài lòng với nó.

  • Nó cho phép bạn xác định giản đồ trong JSON.
  • Nó cho phép bạn xác định dữ liệu ban đầu trong JSON.
  • Tự động tạo cơ sở dữ liệu và bảng nếu cần.
  • Bảng được tạo tự động được điền từ dữ liệu ban đầu nếu dữ liệu được chỉ định.
  • Bạn có thể yêu cầu thư viện ghi nhật ký mọi lệnh SQL vào bảng điều khiển cho mục đích chẩn đoán qua orm_options.logLevel=3.

Nó sử dụng gói felixge/mysql trên chương trình phụ trợ để nói chuyện với MySQL.

So với phần tiếp theo, nó yêu cầu mã ít hơn đáng kể để chạy nhưng cũng kém phần chức năng hơn.

DISCLAIMER: Tôi là tác giả (trong trường hợp đó là không rõ ràng)

1

Tôi là tác giả của js-core-data package, nó vẫn được coi là beta (mặc dù tôi đang sử dụng thành công trong vài dự án thực tế). Tôi muốn nghe một số suy nghĩ và phản hồi từ các nhà phát triển :)

Các vấn đề liên quan