【问题标题】:Getting-started: Setup Database for Node.js入门:为 Node.js 设置数据库
【发布时间】:2011-05-31 08:55:47
【问题描述】:

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

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

有谁知道好的教程吗?

另一个SO post 谈到要使用的 dbs,但由于这与我所经历的 Django/MySQL 世界非常不同,我想确保我了解发生了什么。

谢谢!

【问题讨论】:

  • 我讨厌这样说,但我认为框架是编程语言的糟糕老师。

标签: javascript database node.js


【解决方案1】:

我假设您使用snippets 之一以正确的方式安装了npm(我使用了最上面的一个)。

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 创建了一个聊天。添加持久性 + 身份验证应该是轻而易举的事。

【讨论】:

    【解决方案2】:

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

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

    我的大部分项目都使用这个模板。您也可以使用以下方法实现类似的 mongodb 版本:

    node-mongodb-native by christkv:https://github.com/christkv/node-mongodb-native,或者

    猫鼬:https://github.com/learnboost/mongoose,或

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

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        【解决方案4】:

        我知道这是一篇旧帖子,但万一其他人偶然发现它,我创建了一个使用大部分 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/

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2013-08-24
          • 2014-09-16
          • 2015-05-17
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2014-07-16
          相关资源
          最近更新 更多