Tag: couchdb

使用CouchDB节点JS进行大量parsing

我和我的团队正在使用NodeJS(使用jsdom / jQuery)并parsing存储在CouchDB中的很多HTML文档。 NodeJS是单线程的,所以在一个服务器中有8个内核根本不能帮助我们,这是我想知道如何最好地创buildsubprocess(工作人员?)来处理从CouchDB中取出的单个文件? 这是我的思考过程: 主要NodeJS脚本循环遍历CouchDB视图,每隔X分钟从文档获取HTML文件 产生一个进程来parsing(jsdom / jQuery)并存储每个HTML文件的结果 我们并没有运行一个web服务器来处理这个(所有的命令行),所以我不确定如何处理这个通用的“设置CRON只是单独运行每个parsing任务”。 看来,工作人员通常用来处理来自web服务器的请求。 思考?

Node.JS / Express.JS CouchDB会话存储

有没有工作会话存储或我必须使用MemoryStore ?

将CouchDB和Redis一起用于交易数据

当我读到关于couchdb的时候,我偶然发现了一个关于事务和couchdb的问题。 显然,在沙发上处理交易的方式是拉取最新版本,并将其与您当前使用的版本进行比较。 如果数据快速变化,这可能会出现问题。 另一种方式是缩小地图并将交易数据分成多个文档。 这似乎也不是最佳的。 我正在考虑使用redis来处理这类数据。 增量和减量function对于这种目的来说似乎相当惊人。 所以我可以写一些事务性的关键字的string,如: //some user document { name: "guy", id: 10, page_views: "redis user:page_views:10" } 那么如果我在一些交易数据里面读到类似“redis”的东西,我就知道从redis获取这些信息。 我想我可以事先决定这些东西,但是由于面向文档的数据库的主要任务是灵活的,而不是将数据绑定到列上,我认为可能有一个更简单的方法? 有没有一种简单的方法将redis数据链接到couchdb? 我应该手动完成这一切,并为less数领域? 任何其他的想法? 在用户文档中“最终”更新这个事务性数据还是只是不在那里存储?

CouchDB在插入时清除文档?

我用纳米couchDB,我只是试图做一个简单的更新文件添加一个新的领域。 例如,假设我有一个名为foo的文档。 它现在唯一的领域是“酒吧”,有一定的价值。 然后我尝试用我将在后面发布的代码做db.insert,但是现在不是现在有两个字段,而是删除了,而我只是有我的新字段。 我怎样才能解决这个问题? 我正在使用的代码: dB.get('foo', function(err, body) { if (!err){ if(typeof body.qwax === 'undefined'){ dB.insert({qwax : [data], "_rev" : body._rev}, 'foo', function(err, body, header) { if (err) { console.log(err.message); return; } }); } else{ body.qwax.push(data); dB.insert({qwax : body.qwax, "_rev" : body._rev}, 'foo', function(err, body, header) { if (err) { console.log(err.message); return; } }); […]

把一些从CouchDB的文件放到数组(Node.JS)

我尝试获取ID为1,100,1000的3个文档。但是,node.js是asynchronous的,结果中的数组对象是空的。 如何把文件放入数组? var objects = {}; var objectsID = [1, 100, 1000]; objectsID.forEach( function( elem ){ objectsDB.get( elem, function( err, object ){ objects[elem] = object; }) }); console.log(objects); console.log返回{}。

用头文件读取csv,然后使用node / grunt将每一行上传到couchdb

我想阅读一个CSV文件,并使用咕task任务将每一行上传到一个couchdb。 在这一点上,我还没有做任何数据库validation,如检查logging是否已经存在,但在某些时候也必须这样做。 目前这是我正在做的,问题是只有第65行,第一个子任务名为people正在上传到couchdb。 我知道这与asynchronous执行有关,但不能解决如何做到这一点 Gruntils.js csv2couch: { people: { db: 'http://localhost:5984/db', collectionName: 'person', src:['./data/schema3/people.csv'] }, organisms: { db: '<%= qmconfig.COUCHDBURL %>', collectionName: 'organism', src:['./data/schema3/organisms.csv'] } } csv2couch.js 'use strict'; var nanolib = require('nano'), csv = require('csv'), urls = require('url'), fs = require('fs'); module.exports = function(grunt) { grunt.registerMultiTask('csv2couch', 'Parse csv file and upload data to couchdb.', […]

asynchronous加载NPM模块

我试图创build一个连接到我的数据库(couchDB使用摇篮)的模块。 最后,模块输出“db”variables。 这里是代码: var cradle = require('cradle'), config = require('./config.js'); var db = new(cradle.Connection)(config.couchURL, config.couchPort, { auth: { username: config.couchUsername, password: config.couchPassword }, cache: true, retries: 3, retryTimeout: 30 * 1000 }).database('goblin'); //database name //Check if DB exists db.exists(function (err, exists) { if (err && exists) { console.log("There has been an error finding your CouchDB. […]

使用节点模块Nano的临时CouchDB视图

纳米不提供临时视图的文档,是否有任何无证的方法? 如果不这样做,你会如何build议有人使用类似纳米语法来执行临时视图。 目前我正在尝试创build视图为_view / guid,查询它,返回结果,然后从集合中删除它: function generateToken() { return Math.floor((1 + Math.random()) * 0x10000).toString(16).substring(1); } var db = nano.use('db'), fn = 'function(doc){ emit(doc); }', token = generateToken(), id = '_design/' + token; db.insert({ views: { view: { map: fn } } }, id, function(){ db.view(token, 'view', function (err, results) { db.get(id, function (err, view) { […]

直接从NodeJS / Angular应用程序发送请求到couchDB?

我目前正在构build一个新的Web应用程序,包括用户注册,个人档案,图片上传等等。 我以前的项目使用MEAN堆栈(MongoDB,ExpressJS,Angular,NodeJS),现在想试用一下couchDB。 couchDB免费提供了一个REST-API。 我可以将所有的逻辑转移到客户端,并确保input通过couchDBsvalidationfunction是有效的。 因此,我可以将客户端的请求直接发送到数据库,而且我不必在我的expressJS控制器中编写像CRUD Operations这样烦人的事情。 validation,validation和简单的CRUD操作 – 这一切都是免费的。 有没有理由不这样做? 然后,我会将请求传递给我的服务器,然后将它传递到couchDB,这几乎可以根除mongoDB的所有好处。 问候,米歇尔

Node.js / CouchDB:使用.json文件而不是数据库+版本控制

我想只使用.json文件来存储数据,而不是使用数据库。 很多简单的网站只有很less的数据,读取/写入文件(可以添加到版本控制中)似乎已经足够,并且不需要数据库版本控制/部署后勤。 npm:node-store 这里有一个方法来做到这一点 ,但我需要实现各种查询function。 我真的不熟悉CouchDB。 从我读过的小文件看来,它可能使用文件来存储JSON数据,但它可能使用某种磁盘存储。 有人可以解释一下吗? CouchDB是否将JSON存储在可以添加到版本控制(git)的基于文本的文件中? 有谁知道另一个基于文本的存储系统与一些查询function?