入门:为Node.js设置数据库

Emi*_*ile 82 javascript database node.js

我是node.js的新手,但我很高兴尝试一下.我使用Express作为Web框架,并使用Jade作为模板引擎.根据Node Camp的本教程,两者都很容易设置.

然而,我发现的一个问题是我找不到一个简单的教程来设置数据库.我正在尝试构建一个基本的聊天应用程序(存储会话和消息).

有谁知道一个很好的教程?

这个其他的SO帖子谈论了dbs的使用 - 但是因为这与我所经历的Django/MySQL世界非常不同,我想确保我理解发生了什么.

谢谢!

Alf*_*red 89

我假设您使用其中一个片段(我使用了顶部片段)安装了正确的npm方式.

Redis的

我会使用redis作为数据库.首先,它非常,持久.你需要安装它,但这很容易.

make
Run Code Online (Sandbox Code Playgroud)

Redis的-CLI

接下来你应该自己玩redis.我建议你看看西蒙威利森这本优秀的教程.他和我也建议你只是玩这个redis-cli以获得数据库的感觉.

Redis客户端

最后,您需要安装一个redis客户端.我建议你使用mranney的node_redis,因为我认为它是最快且最活跃的客户端.

安装

npm install hiredis redis
Run Code Online (Sandbox Code Playgroud)

简单示例,包含在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();
});
Run Code Online (Sandbox Code Playgroud)

在数据库中存储会话

Express的作者也创建了一个库来使用redis 来处理你的会话.

安装:

npm install connect-redis
Run Code Online (Sandbox Code Playgroud)

例:

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

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

将消息存储在数据库中

我想我会使用一个有序的集合.使用存储消息ZADD,并使用检索它们ZRANK,ZRANGEBYSCORE.

Socket.io

最后,如果您正在尝试创建一个简单的聊天,我建议您查看socket.io.

socket.io旨在使每个浏览器和移动设备中的实时应用程序成为可能,模糊了不同传输机制之间的差异.

我还使用socket.io创建了一个聊天,我在stackoverflow上发布了这个聊天.添加持久性+身份验证应该是轻而易举的.