将 couchdb 持久性添加到节点中的套接字 json 源
Adding couchdb persistence to a socketio json feed in node
我目前正在研究如何将持久性添加到节点中的实时 Twitter json 提要中。我已经设置了流,它正在向客户端广播,但是我如何将此数据存储在 json 数据库(如 couchdb)中,以便我可以在客户端首次访问页面时访问存储 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:');
});
这是我用来尝试保存/检索推文数据的两个片段。该数组是一条单独的推文,每次收到新推文时都需要保存到沙发上。
我不明白 saveDoc 的 id 部分 - 当我让它唯一时,db.allDocs 只列出 ID 而不是数据库中每个文档的内容 - 当它不唯一时,它会在第一个数据库条目后失败。
有人可以解释一下将这种类型的json数据保存和检索到couchdb的正确方法吗?我基本上想在客户端第一次查看页面时加载整个数据库。(数据库将少于 100 个条目)
干杯。
- 您需要在数据库中插入文档。您可以通过插入来自 Twitter API 的 JSON 来执行此操作,也可以一次插入一个状态 (
for loop
) - 应创建一个公开该信息的视图。如果您直接从Twitter保存了JSON,则需要在map函数中多次
emit
- 操作(引入和查询)不是一回事,因此您应该在程序的不同时间执行它们。
- 您应该考虑运行一个 bg 进程(可能像
setInterval
这样简单)来更新您的数据库。或者,您可以使用类似clarinet
(http://github.com/dscape/clarinet) 的内容直接解析 Twitter 流媒体 API。
我是nano的作者,这是完成您大部分需求的测试之一:
- https://github.com/dscape/nano/blob/master/tests/view/query.js
对于实际的查询语义,以及让您更多地了解CouchDB的工作原理,我建议您阅读:
- http://guide.couchdb.org/editions/1/en/index.html
如果你觉得它有用,我建议你买这本书:)
如果你想使用模块与CouchDB交互,我建议使用cradle或nano。
你也可以使用在 Node.js 中找到的默认 http 模块向 CouchDB 发出请求。缺点是默认的http模块往往有点冗长。有一些替代方案可以为您提供更好的 API 来处理 http 请求。这个请求真的很受欢迎。
要获取数据,您需要向视图发出 GET 请求,您可以在此处找到更多信息。如果要创建文档,则必须对数据库使用PUT请求。
相关文章:
- 如何使用HTML5与UDP套接字通信
- 在node.js中写入ECONNRESET错误和套接字连接检查
- java,javascript签名的小程序(文件选择,ftp上传)安全性/套接字异常
- 套接字服务器向客户端广播,但不从两者接收
- 如何确定套接字中的变量是否匹配
- 如何通过网络套接字连接到树莓派上的Mosquitto经纪人
- 快速的套接字 io 实例/中间件
- PHP:Web套接字和html 5
- 无法从客户端发出套接字消息
- STOMP web套接字回调不'不起作用
- Will my'新对象'在套接字断开连接时被垃圾收集
- 套接字服务器在本地获得500毫秒的往返时间
- 将服务器托管的Web应用程序连接到本地Web套接字
- 通过套接字发送画布元素,JS中的最大堆栈大小
- 如何使用套接字将node.js与ada连接起来
- 将 couchdb 持久性添加到节点中的套接字 json 源
- 通过 TCP 套接字将权重 -> NodeJS 缩放为 Angular 的 JSON
- 套接字.io -是发送对象必须的JSON
- Appcelerator: JSON.解析在套接字中不做任何事情
- 套接字.IO示例:config.Json是什么?