2012-04-10 42 views
11

Tôi đã được nhìn xung quanh để thực hiện cơ sở dữ liệu trừu tượng đơn giản, sau đó tôi tìm thấy bài viết tuyệt vời http://howtonode.org/express-mongodb, mà cũ nhưng tôi vẫn thích ý tưởng.lớp trừu tượng cho cơ sở dữ liệu Node.js

Cũng có thể xây dựng, có thể mất một số loại đối tượng theo nghĩa đen với cài đặt cơ sở dữ liệu. Vì vậy, ý tưởng chính là có thể có các triển khai khác nhau của UserService-s, nhưng xác định vị trí trong các thư mục khác nhau và chỉ yêu cầu một thư mục cần thiết.

/data-layer/mongodb/user-service.js 
        /post-service.js 
        /comment-service.js 

/data-layer/couchdb/user-service.js 
        /post-service.js 
        /comment-service.js 

Khi cơ sở dữ liệu là cần thiết, tôi wil có được nó với var UserService = require(__dirname + '/data-layer/mongodb/user-service).UserService(db); nơi var db = "open db object"

Điều này có thể đúng cách để làm điều đó hoặc là có bất kỳ giải pháp tốt hơn?

+1

Rất hứa hẹn là JugglingDB: https://github.com/1602/jugglingdb Đây là tài liệu hướng dẫn: http: // jsdoc.info/1602/jugglingdb/ –

+0

bạn có thể thấy đây là một nơi tốt để có ý tưởng http://mongodb.github.com/node-mongodb-native/github/github.html – christkv

+1

Khám phá [JSData] (http: // www .js-data.io /). – orad

Trả lời

11

Có một vài giải pháp, có sẵn thông qua NPM:

  • Node-DBI: "Node-DBI là một cơ sở dữ liệu SQL lớp trừu tượng thư viện, lấy cảm hứng mạnh mẽ bởi các API PHP Zend Framework Zend_Db Nó cung cấp các chức năng thống nhất để làm việc. với nhiều công cụ cơ sở dữ liệu, thông qua các lớp Adapters. Tại thời điểm này, các công cụ được hỗ trợ là mysql, mysql-libmysqlclient và sqlite3 ". Có vẻ như sự phát triển đã bị tạm dừng.
  • Accessor: "Trình bao bọc cơ sở dữ liệu, cung cấp quyền truy cập dễ dàng vào cơ sở dữ liệu". Chỉ hỗ trợ MySQL và MongoDB vào lúc này.
  • Activerecord: "Một ORM được viết bằng Coffeescript hỗ trợ nhiều hệ thống cơ sở dữ liệu (SQL, NoSQL và thậm chí REST), cũng như phần mềm trung gian tạo ID. Nó hoàn toàn có thể mở rộng để thêm hệ thống cơ sở dữ liệu mới và plugin."
7

tôi mặc dù nó có thể là thời gian để cập nhật các câu trả lời của một câu hỏi cũ:

Nếu bạn muốn sử dụng MongoDB như document-oriented database của bạn, mongoose là một lựa chọn tốt và dễ sử dụng (ví dụ từ trang web chính thức) :

var mongoose = require('mongoose'); 
mongoose.connect('mongodb://localhost/test'); 

var Cat = mongoose.model('Cat', { name: String }); 

var kitty = new Cat({ name: 'Zildjian' }); 
kitty.save(function (err) { 
    if (err) // ... 
    console.log('meow'); 
}); 

Đối với một cách tiếp cận khá hiện đại, Mongorito là một ODM tốt trong đó sử dụng máy phát điện ES6 thay vì callbacks.

Tính đến 06,2015 Tôi nghĩ rằng ORM tốt nhất cho cơ sở dữ liệu SQL với Node.js/io.js được Sequelize hỗ trợ cơ sở dữ liệu sau đây:

  • PostgreSQL
  • MySQL
  • MariaDB
  • SQLite
  • MSSQL

Cách cài đặt có fairly easy:

var sequelize = new Sequelize('database', 'username', 'password', { 
    host: 'localhost', 
    dialect: 'mysql' 
}); 

// Or you can simply use a connection uri 
var sequelize = new Sequelize('postgres://user:[email protected]:5432/dbname'); 

Nó cũng cung cấp transactions, migrations và nhiều tính năng khác.

+1

Đúng đối với cơ sở dữ liệu dựa trên SQL Phân tích lại ORM là một lựa chọn tuyệt vời. –

+0

@RistoNovik điểm tốt! Sẽ cập nhật câu trả lời :) –

+0

Cảm ơn bạn đã đề xuất phần tiếp theo, thật tuyệt vời :) – kabirbaidhya

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