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

时间:2010-12-27 23:45:29

标签: javascript database node.js

我是node.js的新手,但我很高兴尝试一下。我使用Express作为Web框架,Jade作为模板引擎。在this tutorialNode Camp之后,两者都很容易设置。

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

有没有人知道一个好的教程?

这个其他SO post讨论了使用dbs的问题 - 但由于这与我所处的Django / MySQL世界非常不同,我想确保我理解发生了什么。

谢谢!

4 个答案:

答案 0 :(得分:89)

我假设您npm使用其中一个snippets安装了正确的方式(我使用了前一个)。

Redis的

我会将redis用作数据库。对于其中一个,它确实fast,持久。你需要安装它,但这很容易。

make

Redis的-CLI

接下来你应该自己玩redis。我建议你看看Simon Willison这个优秀的教程。他和我还建议您只使用redis-cli来感受数据库。

Redis客户端

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

<强>安装

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来处理你的sessions

<强>安装:

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 }) })
);

在数据库中存储消息

我想我会用sorted set来做这件事。使用ZADD存储邮件,并使用ZRANKZRANGEBYSCORE

检索邮件

Socket.io

最后,如果你想创建一个简单的聊天,我建议你看一下socket.io。

  

socket.io旨在制作实时应用   适用于所有浏览器和移动设备   设备,模糊了差异   不同的运输之间   机制。

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

答案 1 :(得分:4)

使用Redis进行会话存储的快速身份验证,使用coffeescript进行数据库的Couchdb ..

检查这个要点:https://gist.github.com/652819

我在大多数项目中使用此模板。您也可以使用以下方法实现类似的mongodb版本:

christkv的

node-mongodb-native:https://github.com/christkv/node-mongodb-native

mongoose:https://github.com/learnboost/mongoose

amark的mongous:https://github.com/amark/mongous

答案 2 :(得分:3)

除了NodeCamp教程之外,你还提到了另外一个NodeCamp tutorial由Matt Ranney给出了上述redis节点库的作者。它进一步深入。

答案 3 :(得分: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/