Tag: couchdb

生成词汇提升的唯一ID

我想生成用于CouchDB的ID。 我希望这些ID可以按时间上升,这样我就可以在没有保留单独的时间戳字段的情况下对id进行sorting。 我知道CouchDB会用这个属性来生成id,但是我不希望查询数据库的性能受到影响,我宁愿在我的服务器上运行一个algorithm。 除了结果不是按照词汇升序外,我会去执行rfc 4112。 有没有什么好的理由我不应该这样做: (Date.now()) + 'x' + Math.round(Math.random() *1E18) (我正在使用nodejs)。 使用非标准的uuid,还是依靠随机函数构build的javascript,是否有任何费用?

调用couchdb函数外的variables?

我有很多麻烦得到couchdb的响应处理程序做任何有用的node.js和now.js。 我的目标是回复客户或小组,并发现某些信息,这些信息也是从客户那里发现的。 everyone.now.login = function(){ var username = this.now.lusername; var password = this.now.lpassword; var test; db.get(this.now.lusername, function (err, doc, test, username) { if (err) { console.log(+ username + " doesn't exist!"); } else { console.log('Found user!'); console.log(doc); test = 1; } }); console.log(test); } 我在这里使用testing作为例子。 我在db.get之外声明它,在里面分配一个值来反馈,但是当console.log在外面运行时,它没有值。 我只是没有得到它或者是错的? (我释放我可以使用doc。(无论什么值),但有一个特定的variables,我想传递给客户之外的这个调用)

CouchDB从Node.js中获取用户的所有post

我会开始说我做了很多研究,但是我还是很迷茫。 我有一个工作版本,但这是我可以做到的最无效率的方式。 对于了解规划数据库的最佳方式,我并不是非常有信心,我已经变得依赖于ActiveRecord。 无论如何,我只是想弄清楚这些事情: 找出计划数据库的最佳方式(我应该如何分离文档) find最有效的处理关系 find从服务器查询的好方法 好的,我注意到了一些事情:其一,你不能把我的客户端variables传递给视图,所以使用这种方法是行不通的。 二,我认为可能会有所有的post,然后检查types是否发布,然后返回匹配的文件,但似乎有很多数据移动。 一些代码: 所以我使用Node.js,CouchDB和nano作为中间件。 发布文档: { "_id": "post-slug", "title": "Post Slug", "user": "film42", "date": 1343451412, "type": "post" } 用户文档: { "_id": "film42", "email": "test@example.com", "posts": [ "post-slug", "another-post-slug" ], "type": "user" } 这是我现在如何获取所有post(这真是糟糕!): function buildUserPostArray(array, user, res, i) { db.get(user.posts[i], function(err, post_obj) { if(i < user.posts.length) { array.push(post_obj); […]

Couchdb大小pipe理

我有一个名为restaurants.couch的沙发数据库,​​每周一次我会压缩数据库 ,文件大小将从20MB到11MB。 我看到旧版本不见了 – 我不需要。 不过,我注意到.restaurants_design文件夹的大小超过100MB,在这里有30多个.view文件。 我执行了紧凑视图和清理视图 ,并将其减less到8MB,只有1 .view文件。 我的应用程序也运行得更快一点。 我的问题: 1)为什么.restaurants_design变得如此之大? 什么原因。 这只是一个观点。 2) 紧凑视图和清理视图的好处是什么(除了减小文件大小)? 3) 紧凑视图和清理视图的副作用是什么? 如果我不需要版本控制,我会后悔吗? 4)如果应用程序实际上并不需要版本控制,而是使用一些简单的nosql数据库以及某些视图,那么应该如何执行压缩数据库,压缩视图和清理视图。

在CouchDB中以下划线开头的关键字

有没有在couchDB名称前面加上下划线的名字。 如果我有以下划线开头的键名,我总是收到错误。 谢谢

使用node.js和socket.io向用户显示实时数据

我正在寻找优化/升级我们的Web应用程序从传统的PHP / MySQL,到更高效的技术。 我一直在研究node.js,socket.io和CouchDB,看起来很有前途,但是我正在寻求build议,并且在为我们想要的select最佳技术方面提供一些帮助。 所以,要概述目前的工作 我们有捕获数据并将其发送到FTP服务器(通过.txt文件)的设备。 PHP脚本每5分钟运行一次,扫描设备发送的.txt文件的FTP。 这些文件的内容被插入到MySQL数据库中,并且.txt文件被删除。 另一个每15分钟运行一次的PHP脚本将整理来自数据库的数据(例如,最近一小时的总和值)并生成一个XML文档,这些文档由Flash拨号读取。 很明显,这里有很多问题,远非实时解决scheme,这是我们的目标。 我们想要的解决scheme是,不知何故,它可以检测何时txtfile upload到FTP,然后只处理数据(而不是有一个设置的时间间隔运行)。 数据仍然需要添加到数据库中,一旦添加到数据库中,数据就会被前端读取。 闪光将被完全删除,因为它有点… ick … 有了像node.js和Web Sockets(socket.io)这样令人兴奋的新技术,我相信我们可以大大改善这个过程! 我知道Ajax能够做这样的事情,但是与Web套接字相比,它听起来有相当高的开销。 我也对数据库如何处理node.js有点朦胧,更不用说我们之后的最佳select了… 谢谢!

如何整合CouchApp,Node.JS,Sammy和Moustache

我设置了一个node.couchapp.js CouchApp并将其推送到我的CouchDB。 Sammy和jQuery默认包含在内。 现在,我想为模板添加胡子,但不知道在哪里? 我可以使用它作为Node.js模块或jQuery插件。 我从一些示例代码开始,只是为了看看它是否有效,但不是: ddoc.lists = { "basic": "function (head, req) { var that = this; provides('html', function () { var to_html = require('modules/mustache').to_html; var members = []; var row; while (row = getRow()) { members.push({club: row.key[0], name: row.key[1]}); } return to_html(that.templates['roster.mustache'], { members: members }); }) }" }; 结果是: {"error":"invalid_require_path","reason":"Object has no […]

让CouchDB使用node.js

我使用的节点与iriscouch 。 我已经安装了couchdb-api包。 这是我的代码: console.log("Running"); //Appears in the logs var dbServer = require("couchdb-api").srv('eric-wieser.iriscouch.com'); console.log(dbServer); //Appears in the logs dbServer.info(function (err, response) { console.log("Info!"); //Never executed. Logs show: //Error: ECONNREFUSED, Could not contact DNS servers // at IOWatcher.callback (dns.js:74:15) }); 为什么这不起作用? 试图告诉我的是什么错误?

如何允许访问不同的端口?

Amber Smalltalk IDE与一个用nodejs编写的服务器一起工作。 如何configurationXMLHttpRequests到同一个域的不同端口的服务器? 琥珀色的默认访问权限是 http://127.0.0.1:4000/ 并检索和存储JSON数据我想使用一个couchDB实例(默认端口是5984) | req | req := XMLHttpRequest new. req open: 'GET' url: 'http://127.0.0.1:5984/' asynchronous: false. req send: ''. 问题 由于跨域访问策略,访问是不可能的。 笔记 服务器被调用 amber-master\bin\server.bat 服务器在 amber-master\cli\js\amber-cli.js 客户端是Firefox,它应该允许XMLHttpRequest对象可以访问不同的端口,只要服务器用“Access-Control-Allow-Origin头”来指示。 参考 http://www.w3.org/TR/cors/#access-control-allow-origin-response-header CouchDB从XMLHttpRequest跨域访问? MKroenert回答之后 我升级到CouchDB 1.4.0版本,并调整local.ini文件以允许CORS(C:\ Program Files \ Apache Software Foundation \ CouchDB \ etc \ couchdb \ local.ini) [httpd] enable_cors = […]

CouchDB过滤的复制:在首次完成复制之后修改doc_id

NPM的(节点包pipe理器)registry使用CouchDB在http://registry.npmjs.org/registry的CouchDB实例中存储包的元信息和压缩包。我使用下面的复制文档(CouchDB 1.1.0)来复制registry子集到我的公司CouchDB: { "_id": "fetch-npm-registry", "doc_ids": [ "coffee-script", "nodeunit" ], "source": "http://couchdb.mycompany.com:5984/registry", "target": "registry", } [顺便说一句,CouchApp处理这是在https://github.com/isaacs/npmjs.org (也完整的安装说明)]。 如果我想添加一个依赖到我的包,我天真的想法是我只是修改doc_ids列表(例如, ["coffee-script", "nodeunit", "npm"] ),并再次启动复制。 然而,这不起作用 :复制立即完成,我想添加到复制(在这种情况下"npm" )的包丢失。 [我知道的解决方法是删除目标数据库,再次复制,因为我也使用本地registry来发布我的专有软件包 – 重新发布我的本地软件包。 叹气 ] 2011年11月18日修正 以下是我认为会发生什么(根本不是一个CouchDB内部专家,但也许有一些事实): 在第一次成功复制之后,CouchDB将最近复制的最新文档的最后一个(最高?) 序列ID存储在数据库的隐藏文档中(我曾经知道如何访问这些文档,欢迎使用指针)。 然后,当我更改doc_ids这个caching的信息关于最后一次成功的复制(序列ID)不失效(或清除)。 然后,当它被告知再次使用相同的数据库进行复制时,它会比较序列号并决定一切正常。