Початок роботи: Налаштування бази даних для Node.js


82

Я новачок у node.js, але раді спробувати його. Я використовую Express як веб-фреймворк, а Jade як механізм шаблонів. Обидва програми легко було налаштувати, дотримуючись цього підручника від Node Camp .

Однак одна проблема, яку я знаходжу, полягає в тому, що я не можу знайти простий підручник з налаштування БД . Я намагаюся створити основну програму чату (зберігати сесію та повідомлення).

Хтось знає хороший підручник?

Ця інша публікація SO розповідає про використання DB, але оскільки це сильно відрізняється від світу Django / MySQL, в якому я був, я хочу переконатися, що розумію, що відбувається.

Дякую!


Я ненавиджу це говорити, але я думаю, що фреймворк - це поганий викладач мови програмування.
grantwparks

Відповіді:


89

Я припускаю, що ви встановили npm правильно, використовуючи один із цих фрагментів (я використав верхній).

Редіс

Я б використовував redis як базу даних. Для одного це дуже швидко , наполегливо. Вам потрібно встановити його, але це дуже просто.

make

Редіс-клі

Далі вам слід пограти з redis самостійно. Я порадив би вам переглянути цей чудовий підручник Саймона Віллісона . Ми з ним також радимо вам просто пограти з цим, redis-cliщоб відчути базу даних.

Клієнт Redis

Нарешті, вам потрібно встановити клієнт redis. Я б порадив вам використовувати node_redis mranney, оскільки я вважаю, що це найшвидший та найбільш активно розвивається клієнт.

Встановлення

npm install hiredis redis

Простий приклад, включений як 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();
});

Зберігання сесій у базі даних

Також автор Express створив бібліотеку для обробки ваших сеансів за допомогою redis.

Встановлення:

npm install connect-redis

Приклад:

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

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

Зберігання повідомлень у базі даних

Думаю, для цього я б використав відсортований набір . Зберігайте повідомлення , використовуючи ZADDі витягувати їх з допомогою ZRANK, ZRANGEBYSCORE.

Socket.io

Нарешті, якщо ви намагаєтеся створити простий чат, я порадив би вам заглянути на socket.io.

socket.io прагне зробити програми реального часу можливими у кожному браузері та мобільному пристрої, розмиваючи відмінності між різними транспортними механізмами.

Я також створив чат за допомогою socket.io, який опублікував на stackoverflow . Додавання наполегливості + автентифікації повинно бути легким диханням.


4

Експрес-автентифікація за допомогою Redis для сховища сеансів та Couchdb для бази даних за допомогою coffeescript ..

Перевірте цю суть: https://gist.github.com/652819

Я використовую цей шаблон для більшості своїх проектів. Ви також можете реалізувати подібну версію mongodb, використовуючи:

node-mongodb-native від christkv: https://github.com/christkv/node-mongodb-native , або

mongoose: https://github.com/learnboost/mongoose , або

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


3

На додаток до підручника з NodeCamp, про який ви згадали, існує ще один підручник по NodeCamp, який дав Метт Ренні, згаданий вище автор бібліотеки вузлів redis. Це заглиблюється на трохи більше глибини.


2

Я знаю, що це стара публікація, але на випадок, якщо хтось ще натрапить на неї, я створив навчальний посібник, використовуючи більшість компонентів OP, особливо підключення до бази даних. Він має деяку додаткову складність із використанням Backbone.js, але все це в задоволенні!

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

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.