Bắt đầu: Thiết lập Cơ sở dữ liệu cho Node.js


82

Tôi mới sử dụng node.js nhưng rất vui khi dùng thử. Tôi đang sử dụng Express làm khuôn khổ web và Jade làm công cụ mẫu. Cả hai đều dễ dàng cài đặt theo hướng dẫn này từ Node Camp .

Tuy nhiên, một vấn đề tôi đang gặp phải là tôi không thể tìm thấy hướng dẫn đơn giản để thiết lập DB . Tôi đang cố gắng xây dựng một ứng dụng trò chuyện cơ bản (phiên lưu trữ và tin nhắn).

Có ai biết về một hướng dẫn tốt?

Bài đăng SO khác này nói về dbs để sử dụng- nhưng vì điều này rất khác với thế giới Django / MySQL mà tôi đã tham gia, tôi muốn đảm bảo rằng tôi hiểu những gì đang xảy ra.

Cảm ơn!


Tôi ghét phải là người nói điều này, nhưng tôi nghĩ framework là một giáo viên kém của ngôn ngữ lập trình.
Grantwparks

Câu trả lời:


89

Tôi giả sử bạn đã cài đặt npm đúng cách bằng cách sử dụng một trong những đoạn mã này (tôi đã sử dụng đoạn mã trên cùng).

Redis

Tôi sẽ sử dụng redis làm cơ sở dữ liệu. Đối với một nó là thực sự nhanh chóng , bền bỉ. Bạn cần phải cài đặt nó, nhưng điều đó thực sự dễ dàng.

make

Redis-cli

Tiếp theo, bạn nên tự chơi với redis. Tôi khuyên bạn nên xem hướng dẫn tuyệt vời này của Simon Willison . Anh ấy và tôi cũng khuyên bạn chỉ nên chơi với redis-cliđể có được cảm giác về cơ sở dữ liệu.

Khách hàng Redis

Cuối cùng, bạn cần cài đặt một ứng dụng khách redis. Tôi khuyên bạn nên sử dụng node_redis của mranney vì tôi nghĩ nó là ứng dụng khách được phát triển tích cực và nhanh nhất.

Cài đặt

npm install hiredis redis

Ví dụ đơn giản, bao gồm như example.js:

var redis = require("redis"),
    client = redis.createClient();

client.on("error", function (err) {
    console.log("Error " + err);
});

client.set("string key", "string val", redis.print);
client.hset("hash key", "hashtest 1", "some value", redis.print);
client.hset(["hash key", "hashtest 2", "some other value"], redis.print);
client.hkeys("hash key", function (err, replies) {
    console.log(replies.length + " replies:");
    replies.forEach(function (reply, i) {
        console.log("    " + i + ": " + reply);
    });
    client.quit();
});

Lưu trữ các phiên trong cơ sở dữ liệu

Ngoài ra, tác giả của express đã tạo một thư viện để xử lý các phiên của bạn bằng redis.

Cài đặt:

npm install connect-redis

Thí dụ:

var connect = require('connect')
      , RedisStore = require('connect-redis');

connect.createServer(
  connect.cookieDecoder(),
  // 5 minutes
  connect.session({ store: new RedisStore({ maxAge: 300000 }) })
);

Lưu trữ tin nhắn trong cơ sở dữ liệu

Tôi nghĩ rằng tôi sẽ sử dụng một tập hợp được sắp xếp cho việc này. Lưu trữ các thông điệp sử dụng ZADDvà lấy chúng bằng ZRANK, ZRANGEBYSCORE.

Socket.io

Cuối cùng nếu bạn đang cố gắng tạo một cuộc trò chuyện đơn giản, tôi khuyên bạn nên xem qua socket.io.

socket.io nhằm mục đích làm cho các ứng dụng thời gian thực có thể thực hiện được trên mọi trình duyệt và thiết bị di động, xóa mờ sự khác biệt giữa các cơ chế vận chuyển khác nhau.

Tôi cũng đã tạo một cuộc trò chuyện bằng cách sử dụng socket.io mà tôi đã đăng trên stackoverflow . Thêm tính năng bền bỉ + xác thực sẽ dễ dàng.


4

Xác thực nhanh bằng Redis cho cửa hàng phiên và Couchdb cho cơ sở dữ liệu bằng coffeescript ..

Kiểm tra ý chính này: https://gist.github.com/652819

Tôi sử dụng mẫu này cho hầu hết các dự án của mình. Bạn cũng có thể triển khai một phiên bản mongodb tương tự của nó bằng cách sử dụng:

node-mongodb-native bởi christkv: https://github.com/christkv/node-mongodb-native hoặc

mongoose: https://github.com/learnboost/mongoose hoặc

amark's mongous: https://github.com/amark/mongous


3

Ngoài hướng dẫn NodeCamp mà bạn đề cập còn có một hướng dẫn NodeCamp khác được đưa ra bởi Matt Ranney, tác giả đã nói ở trên của thư viện nút redis. Nó đi sâu hơn một chút.


2

Tôi biết đây là một bài viết cũ, nhưng trong trường hợp có ai khác tình cờ gặp nó, tôi đã tạo một hướng dẫn sử dụng hầu hết các thành phần của OP, đặc biệt là kết nối với cơ sở dữ liệu. Nó có một số phức tạp hơn khi sử dụng Backbone.js, nhưng tất cả đều rất thú vị!

http://fzysqr.com/2011/02/28/nodechat-js-using-node-js-backbone-js-socket-io-and-redis-to-make-a-real-time-chat-app/

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.