【问题标题】:Adding couchdb persistence to a socketio json feed in node将 couchdb 持久性添加到节点中的 socketio json 提要
【发布时间】:2012-05-30 09:18:30
【问题描述】:

我目前正在研究如何将持久性添加到 node.js 中的实时 twitter json 提要。 我已经设置了流,它正在向客户端广播,但是我如何将这些数据存储在诸如 couchdb 之类的 json 数据库中,这样我就可以在客户端第一次访问页面时访问存储的 json?

我似乎无法理解 couchdb。

var array = { 
    "tweet_id": tweet.id,
    "screen_name": tweet.user.screen_name,
    "text" : tweet.text, 
    "profile_image_url" : tweet.user.profile_image_url 
};

db.saveDoc('tweet', strencode(array), function(er, ok) {
    if (er) throw new Error(JSON.stringify(er));
    util.puts('Saved my first doc to the couch!');
});

db.allDocs(function(er, doc) {
    if (er) throw new Error(JSON.stringify(er));
    //client.send(JSON.stringify(doc));
    console.log(JSON.stringify(doc));
    util.puts('Fetched my new doc from couch:');
});

这是我用来尝试保存/检索推文数据的两个 sn-ps。该数组是一条单独的推文,每次收到新推文时都需要保存到沙发上。

我不理解 saveDoc 的 id 部分 - 当我使它唯一时,db.allDocs 只列出 ID 而不是数据库中每个文档的内容 - 当它不是唯一的时,它在第一个数据库条目后失败。

有人可以解释将这种类型的json数据保存和检索到couchdb的正确方法吗? 我基本上想在客户端第一次查看页面时加载整个数据库。 (数据库将少于 100 个条目)

干杯。

【问题讨论】:

    标签: javascript json node.js couchdb


    【解决方案1】:
    • 您需要在数据库中插入文档。您可以通过插入来自 twitter API 的 JSON 来执行此操作,也可以一次插入一个状态 (for loop)
    • 您应该创建一个显示该信息的视图。如果您直接从 Twitter 保存 JSON,您将需要在地图函数中多次 emit
    • 那里的操作(摄取和查询)不是一回事,因此您应该在程序中的不同时间真正执行它们。
    • 您应该考虑运行一个更新数据库的 bg 进程(也许像setInterval 这样简单)。或者您可以使用 clarinet (http://github.com/dscape/clarinet) 之类的东西直接解析 Twitter 流 API。

    我是nano 的作者,下面是满足您大部分需求的测试之一:

    对于实际的查询语义和您了解 CouchDB 的工作原理的更多信息,我建议您阅读:

    如果你觉得它有用,我建议你买这本书:)

    【讨论】:

      【解决方案2】:

      如果您想使用模块与 CouchDB 交互,我建议您使用 cradlenano

      您还可以使用在 Node.js 中找到的默认 http 模块向 CouchDB 发出请求。不利的一面是默认的 http 模块往往有点冗长。有一些替代方案可以为您提供更好的 API 来处理 http 请求。 request 真的很受欢迎。

      要获取数据,您需要向视图发出 GET 请求,您可以找到更多信息 here。如果要创建文档,则必须对数据库使用 PUT 请求。

      【讨论】:

        猜你喜欢
        • 2017-12-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-09-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多