Articles of couchdb

如何处理callback函数中的响应(例如nodejs中的cradle)

我在“nodejs”中使用“express”和“cradle”。 如果我请求我的数据库,我必须定义一个callback来处理响应。 不幸的是我没有访问res(响应)在我的callback函数。 这个问题的最佳做法是什么? 这是我的代码。 var cradle = require('cradle'); var db = new cradle.Connection().database('guestbook'); app.get('/guestbook', function(req, res) { db.view('guestbook/all', function(err, doc) { console.log(doc); // How can I use res in this callback // to send the response? }); });

couchdb自定义authentication处理程序

我不得不承认,我对这个话题相当陌生,特别是对于erlang来说是新的。 目前,我正在尝试与各种身份validation处理程序 – 目标是在Facebook,Twitter等有一个工作的“委托身份validation”。 据我了解,couchdb的oAuth实现正好与我所需要的相反。 你可以使用它来为沙发用户创build令牌,但不接受twitter访问令/秘密并将其映射到沙发用户。 我在datacouch中发现了我需要的东西 – 使用nodejs对Twitter进行身份validation,然后从私人沙发上获取明文密码,并使用_session-API创build一个沙发cookie。 现在我试图避免存储明文密码。 我听说要使用proxy_authentification_handler,但似乎我太没有经验或甚至太愚蠢的使用它。 我做了(据我所知)在couch_httpd_auth正确的条目 couch_httpd_auth auth_cache_size 50 authentication_db _users authentication_redirect /_utils/session.html require_valid_user false proxy_use_secret false secret xxxxxxxxxxxx timeout 43200 x_auth_roles roles x_auth_token token x_auth_username uname 也在httpd部分 httpd allow_jsonp true authentication_handlers {couch_httpd_auth, proxy_authentification_handler},{couch_httpd_auth, cookie_authentication_handler}, {couch_httpd_auth, default_authentication_handler} bind_address 127.0.0.1 default_handler {couch_httpd_db, handle_request} port 5984 secure_rewrites false vhost_global_handlers _utils, _uuids, […]

Node.js使用二进制文件将http.ClientRequestpipe道传输到fs.createWriteStream会导致损坏的/臃肿的文件

我正在处理一个Node.js(v0.4.12)模块,我有一个奇怪的问题。 这是一个CouchDB模块,虽然我非常确定CouchDB在这里不是问题,但我会把它包含进来,因为它可能是有用的信息。 无论如何,我正在编写一个包装器,用于上传和下载附件与CouchDB。 我有上传部分工作得很好,这是我有困难的下载部分。 我的testing过程是这样的: 上传图片文件( http.request , fs.createReadStream ) 下载文件( http.request ) 将下载的文件保存到不同的位置进行比较/损坏检查( fs.createWriteStream , stream.pipe ) 这对于纯文本文件工作正常,但像图像的二进制文件行为不同。 正如我之前提到的,上传显示正常。 我可以访问CouchDB中的URL并查看图像。 (大小匹配,它呈现我上传的图像)当我使用我的模块下载文件并保存它,输出文件大于源文件,(50-100%大),它不能打开任何图像编辑。 (因此,它以某种方式被“损坏”) 当涉及到二进制文件时,我是否错过了Streams? 我已经尝试将encoding双方都改为"binary"和"base64" ,但输出文件仍然比源文件大50%。 在我发现编码选项之前,它被设置为"utf8" ,并且输出文件大了100%,这使我认为这是一个编码问题。 我也尝试手动pipe道stream(而不是使用pipe方法本身),但结果是相同的。

在同一应用程序中使用多个数据库

我目前在node.js开发一个应用程序。 我有一个Postgres / PostGIS数据库来存储地理空间信息,并将其呈现为SVG。 迄今为止工作正常。 另一方面,我有一个CouchDB数据库充满了以前项目的数据。 我想将这些数据与来自postgis的地理空间数据通过node.js结合起来,但是我不知道如何处理数据库的结构。 在一个应用程序中使用两种不同的数据库types(甚至范例)是一个好主意吗? 或者是将数据从一个数据库转换到另一个数据库更好? 顺便说一句:这纯粹是一个爱好项目。

对CouchDB的反向代理在Node.js中挂起POST和PUT

我使用请求在Express中实现以下反向代理到CouchDB: app.all(/^\/db(.*)$/, function(req, res){ var db_url = "http://localhost:5984/db" + req.params[0]; req.pipe(request({ uri: db_url, method: req.method })).pipe(res); }); 在进行GET请求时,它将起作用:请求从客户端转到node.js到CouchDB并成功返回。 POST和PUT请求无限期挂起。 日志语句运行直到代理,但CouchDB不表示收到请求。 为什么会发生这种情况,如何解决?

我应该如何构build我的数据库和API服务器为基于回合的多人iPhone的棋盘游戏? (考虑nodejs,mongo,沙发等)

我正在为iPhone和最终Android开发基于回合的棋盘游戏。 我正在使用Appcelerator Titanium来开发它。 我的多人游戏devise与Words With Friends类似。 准备好后,用户轮stream使用,然后相应地更新对手的游戏板。 我的需求之一是有一个消息传递API,使得玩家的设备能够在移动之后相互更新游戏板的状态。 想用JSON来做这件事,并且在包含所有游戏棋子的位置的设备上保留一个JSON对象。 这是需要在本地设备上更新的对象,然后在移动完成后将更改发送给对手的设备。 过去,我已经为移动平台完成了API,为此我使用了PHP和MySQL,并在API服务器和移动设备之间来回发送JSON。 适用于低并发用户,通常非常规的应用程序。 希望这个会变得庞大;) 所以现在,我开始考虑持久套接字,而不是一个普通的httpd服务器,而不是我的新游戏。 我也认为,放弃大型LAMP堆栈可能是明智的,而且为了可扩展性和易于开发,更多地倾向于像Mongo / Couch – > node.js – > iPhone这样的数据stream。 我会坦白的说,这将是我第一次进入非sql数据库和node.js。 有兴趣听到别人在这方面的经验和经验,有更多的select/想法,以及我是否以正确的方式思考,或只是为自己头痛。

如何让访问者通过手机网站离线访问CouchDB数据?

对于没有在Android上安装CouchDB的用户来说,让他们离线访问我的CouchDB数据(使用Node.js)的最佳实践方式是什么? 这是我的猜测:当用户在线时,阅读CouchDB数据并输出列出数据的JS对象文字。 使用browsercouch将JS对象字面值存储在本地存储中。 离线访问者将能够从本地存储获取数据。

在不超过堆栈限制的情况下,通过大量庞大的函数进行迭代或recursion的最佳方法是什么?

我有一个应用程序,我正在编写Node.js需要进行大量的configuration和数据库调用,以处理用户数据。 我遇到的问题是,在11800多个函数调用之后,Node会抛出一个错误并退出进程。 错误说:RangeError:超过最大调用堆栈大小 我很好奇,如果有其他人有这种情况出现,并知道他们如何处理这个。 我已经开始将我的代码分解成几个额外的工作文件,但即使如此,每次处理数据节点时,都需要触摸2个数据库(最多25次调用更新各种表),并执行一些清理检查。 我完全愿意承认,如果情况确实如此,我可能会做一些非最佳的事情,但是如果有一个更优化的方式,我会欣赏一些指导。 以下是我在数据上运行的代码示例: app.post('/initspeaker', function(req, res) { // if the Admin ID is not present ignore if(req.body.xyzid!=config.adminid) { res.send( {} ); return; } var gcnt = 0, dbsize = 0, goutput = [], goutputdata = [], xyzuserdataCallers = []; xyz.loadbatchfile( xyz.getbatchurl("speakers", "csv"), function(data) { var parsed = csv.parse(data); console.log("lexicon", parsed[0]); for(var […]

使用Node.JS和CouchDB的离线应用程序

我有一个我想创build的应用程序。 但我不知道如何去做。 我正在使用node.js,并希望使用couchdb,但如果像mongodb或riak这样的东西将是一个更好的select,他们愿意听到的想法。 但是,我有一个网站,说 cool.com 还有一个couchdb实例,还有一个pipe理商店的网站。 说一个购物车。 数据库容纳了所有商店的物品和数据。 该应用程序本身有一个pipe理后端来pipe理该数据,并可以更改项目。 我希望能够做到的是有能力让用户从互联网断开,并仍然有pipe理后端工作。 我意识到这个工作,我需要使用我的模型/路线/控制器/任何客户端框架。 但我不确定的是如何让网站在离线状态下正常工作。 如果在本地安装couchdb可以同步从本地到远程的数据,当返回在线时,如果pipe理员用户在电脑上,我可以让他们安装沙发。 但是这可能是混乱的。 另外,如果pipe理员用户在平板电脑或手机上呢? 我需要有一个实际的移动应用程序和桌面应用程序来做到这一点? 有没有什么办法可以设置,所以它是最终用户的无缝。 我也想这也是最终用户的离线,但更大的受众是pipe理员。 另一个使用案例,店内POS系统。 电源熄灭。 但POS系统可以从网上加载到平板电脑,他们仍然可以制作基于卡的销售,如果WiFi无法使用,因为该应用程序可以离线使用。 我只是不知道如何做到这一点。 让我们假设我需要一个可以处理数据以及后端的客户端框架。 像烬,或angular。 所有这一切都像meteor和德比js一样,但这些并不完全离线,而是为了实时显示。 虽然meteor确实有迷你mongo,所以它可能值得一看。 我希望有人能帮我弄清楚如何让这个设置工作,最好是用沙发,但是如果我可以有办法同步数据的话,其他的nosql也可以工作。

Couchdb在Nodejs中

我刚开始使用nodejs中的couchdb。 我正在寻找一个教程或文章,可以帮助我开始或至less一些代码行。 我不想使用任何模块进行数据库抽象,因为这会挫败学习的目的。 我正在寻找使自己的模块,与沙发工作,从我的理解,这可以很容易地完成与请求模块https://github.com/mikeal/request但我还没有发现任何关于这一点。 谢谢!