2015-04-11 20 views
7

Tôi đã làm việc với các bản ghi hoạt động bản ghi và dữ liệu hoạt động đủ ORM để biết các vấn đề với việc sử dụng ORM hoạt động ghi trong các dự án lớn của tôi. Ngay bây giờ tôi đang suy nghĩ để di chuyển một trong các dự án của tôi đến node.js và cố gắng tìm các công cụ tương tự mà tôi đang sử dụng ngay bây giờ. Sau khi nghiên cứu, tôi không tìm thấy bất kỳ node.js ORM nào tuân theo mẫu trình ánh xạ dữ liệu. Tất cả đều là hồ sơ tích cực. Có lẽ tôi thiếu một cái gì đó, và bạn có thể cho tôi biết là có một ORM phổ biến tốt cho node.js mà không theo mẫu hoạt động ghi lại?Javascript node.js ORM theo mẫu ánh xạ dữ liệu

Các thư viện Ive nhìn vào:

+0

Hãy thử [StrongLoop] (http://strongloop.com/), bạn có thể ánh xạ các kiểu vào các bảng và tạo một máy khách REST được sử dụng với API REST được tạo ra bởi ánh xạ. Không biết nếu đây là những gì bạn đang tìm kiếm nhưng không đau đặt nó ra khỏi đó như là một bình luận? :) – furier

+0

@furier nó không giống như orm – pleerock

Trả lời

11

Sau rất nhiều thất vọng của hiện tồn tại ORMs cho JavaScript Tôi đã viết ORM của riêng tôi có hỗ trợ nguyên cảo/ES6/ES5 và sau mẫu dữ liệu ánh xạ và tất cả các thực hành tốt nhất khác - TypeORM

-5

Sự khác biệt giữa mô hình dữ liệu ánh xạ và ghi lại hoạt động không thực sự có ý nghĩa trong ngôn ngữ động như JavaScript. Trình ánh xạ dữ liệu thường nhẹ hơn trong ngôn ngữ đã nhập, nhưng trong JS nó không thực sự tạo ra sự khác biệt. Từ đầu của tôi, tôi có thể đề cập đến hai dự án rất phổ biến mà bạn có thể không biết:

Waterline.js là bản tóm tắt Sails, hoạt động khá tốt trên nhiều hệ thống cơ sở dữ liệu.

Nếu bạn xem xét MongoDB cho DB của mình - Mongoose.js.

+4

thực sự nó có ý nghĩa trong javascript quá. Tôi đã làm việc với các thư viện JavaScript phía khách hàng theo mẫu hoạt động ghi và họ chỉ đang giết chết ứng dụng của tôi. Tôi đã không viết lại cùng một thư viện vào kiểu bản đồ dữ liệu – pleerock

+2

bản ghi hoạt động và trình ánh xạ dữ liệu hoàn toàn khác với các mẫu thiết kế khác nhau. Không quan trọng nếu đó là JavaScript hay Java, mẫu có thể giống nhau. –

1

Tôi đã viết ORM cho Node.js được gọi là nút-data-mapper; nó có sẵn ở đây: https://www.npmjs.com/package/node-data-mapper. Đó là ORM cho Node.js sử dụng mẫu trình ánh xạ dữ liệu. Nhà phát triển sử dụng các đối tượng JavaScript thuần cũ khi đọc và ghi vào cơ sở dữ liệu. Mối quan hệ giữa các bảng không được xác định cứng nhắc, mà làm cho việc tham gia rất linh hoạt - theo ý kiến ​​của tôi, dù sao - mặc dù hơi tiết. Thuật toán ánh xạ dữ liệu thực tế nhanh và ngắn, và độ phức tạp là tuyến tính (sự biến đổi từ dữ liệu DB dạng bảng thành một đối tượng JavaScript chuẩn hóa được thực hiện trong một vòng lặp).

Tôi cũng đã cố gắng hết sức để làm cho nó khá chịu lỗi. Có 100% phạm vi mã và, trong khi tôi biết điều đó không chứng minh sự vắng mặt của các khuyết tật, tôi đã cố gắng kiểm tra kỹ lưỡng nhất có thể.

Tôi đã lập mô hình giao diện rất lỏng lẻo sau Doctrine 1. (Tôi đã sử dụng LINQ, Doctrine 1 và 2 và Hibernate khá rộng rãi, và trong số những ORM đó tôi thích giao diện cho Doctrine 1 nhất. Nút-data-mapper tuy nhiên, không phải là cổng JavaScript của Doctrine bằng bất kỳ phương tiện nào và giao diện khác biệt đáng kể.) Giao diện truy vấn trả về các lời hứa bằng cách sử dụng mô-đun deferred.

Tôi đã lập mô hình các điều kiện (ví dụ: mệnh đề WHERE và ON) sau điều kiện của MongoDB. Hy vọng rằng làm cho các điều kiện hơi trực quan trong khi cung cấp một cách để thực hiện các truy vấn có thể tái sử dụng (đặc biệt, các truy vấn SELECT phức tạp có thể được lọc một cách an toàn theo nhiều cách khác nhau). Các điều kiện được coi là một ngôn ngữ cụ thể theo miền, và được lexed, phân tích cú pháp và biên dịch.

Dù sao, mô-đun là thứ mà tôi sử dụng trong các dự án cá nhân của mình, nhưng tôi rất muốn nhận được phản hồi từ các nhà phát triển khác trong cộng đồng! Tôi đã cố gắng cung cấp nhiều ví dụ để giúp mọi người nhanh chóng và hoạt động. Hiện tại mô-đun chỉ hỗ trợ MySQL, nhưng tôi đang làm việc để thêm hỗ trợ cho MSSQL.

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