我在CouchDB中创建了一个小型测试数据库,我在Futon中创建了一个临时视图.我写了mapper和reducer.映射器工作,但reducer的复选框永远不会显示.我知道应该有一个复选框,因为我在播放一个更大的数据库时看到它.
为什么不存在减速器复选框?这是正常的行为吗?减速机复选框有时不会出现吗?也许是因为我的结果集很小或者由于某种原因无法减少?(虽然我认为没有理由不能减少我的结果)
我的映射器就是这个.我添加了这个[1, 2, 3].forEach东西只是因为我认为我需要将结果集放大以获得reduce复选框.
function(doc) {
[1, 2, 3].forEach(function() {
emit(doc.name, 1);
});
}
Run Code Online (Sandbox Code Playgroud)
减速机就是这个.
function(keys, values, rereduce) {
return sum(values);
}
Run Code Online (Sandbox Code Playgroud)
结果如下所示:

在磁盘上的数据库文件大小方面,我对CouchDB行为非常困惑.看起来我做的并不重要,数据库文件只会变得越来越大(甚至在删除/清除文档或整个数据库时).
我看了我的/var/lib/couchdb/_dbs.couch文件,它的尺寸从未减小过.简单的例子:
curl -X PUT http://admin:secretpassword@localhost:5984/testdb
Run Code Online (Sandbox Code Playgroud)
_dbs.couch 文件大小增加了5kb.
curl -X DELETE http://admin:secretpassword@localhost:5984/testdb
Run Code Online (Sandbox Code Playgroud)
文件大小没有变化.即使我过滤了数据库的复制(过滤掉已删除的文档)或手动触发压缩,磁盘文件大小也不会减少.现在真正令人困惑的是,Fauxton实际上在这些操作之后显示减少的数据库大小,但它从未反映在所使用的物理磁盘空间中.
在全新安装后,我使用的几乎是标准配置.
这是"像预期的那样工作"还是这里有什么问题?
更重要的是:我能做些什么吗?
我想知道如何阻止读者访问couchdb中的蒲团(_utils),只允许访问管理员.我需要这样做,为什么如果读者用户访问被褥,他可以看到我所有数据库的名称和有多少文件.我的应用程序应该让读者只有拥有它们的id才能访问文档.
来自http://wiki.apache.org/couchdb/Introduction_to_CouchDB_views
couchdb reduce函数定义为
Run Code Online (Sandbox Code Playgroud)function (key, values, rereduce) { return sum(values); }
我无法理解何时/为什么键数组将包含不同的键值.如果键数组确实包含不同的键值,我将如何处理它?
例如,假设我的数据库包含表单帐户之间的移动.
Run Code Online (Sandbox Code Playgroud){"amount":100, "CreditAccount":"account_number", "DebitAccount":"account_number"}
我想要一个提供帐户余额的视图.
我的地图功能有:
Run Code Online (Sandbox Code Playgroud)emit( doc.CreditAccount, doc.amount ) emit( doc.DebitAccount, -doc.amount )
我的reduce函数有:
回报总和(值);
我似乎得到了预期的结果,但是我无法将此与我的reduce函数获得不同键值的可能性相协调.
我的reduce函数是否应该首先对键值进行分组?在那种情况下我会返回什么样的结果?
我在ubuntu 10.04上配置并安装了couchdb 1.6.1.虽然配置和安装它说成功完成了.但是,当我启动couchdb时,它给了我错误.
什么时候开始..
Apache CouchDB 1.6.1 (LogLevel=info) is starting.
Apache CouchDB has started. Time to relax.
**[info] [<0.32.0>] Apache CouchDB has started on http://127.0.0.1:5984/**
Run Code Online (Sandbox Code Playgroud)
再次开始时
Apache CouchDB 1.6.1 (LogLevel=info) is starting.
**Failure to start Mochiweb: eaddrinuse**
[error] [<0.127.0>] {error_report,<0.31.0>,
{<0.127.0>,crash_report,[[{initial_call,
{mochiweb_socket_server,init,['Argument__1']}},
{pid,<0.127.0>},
{registered_name,[]},
{error_info,
{exit,eaddrinuse,
[{gen_server,init_it,6},
{proc_lib,init_p_do_apply,3}]}},
{ancestors,
[couch_secondary_services,couch_server_sup,
<0.32.0>]},
{messages,[]},
{links,[<0.95.0>]},
{dictionary,[]},
{trap_exit,true},
{status,running},
{heap_size,987},
{stack_size,24},
{reductions,467}],
[]]}}
{"init terminating in do_boot",{{badmatch,{error,{bad_return,{{couch_app,start,[normal,["/usr/local/etc/couchdb/default.ini","/usr/local/etc/couchdb/local.ini"]]},{'EXIT',{{badmatch,{error,shutdown}},[{couch_server_sup,start_server,1},{application_master,start_it_old,4}]}}}}}},[{couch,start,0},{init,start_it,1},{init,start_em,1}]}}
Crash dump was written to: erl_crash.dump
init terminating in do_boot ()
Run Code Online (Sandbox Code Playgroud)
在local.ini中,我将端口更改为5983,并从127.0.0更改 …
我已经使用CouchDB一段时间了,我目前正在本地环境中测试CouchDB 2和Fauxton.与好旧的被褥相比,真正令人不安的一件事是Fauxton无法浏览文档修订历史.
这个新的React工具真的没有实现,还是我错过了?是否有Fauxton附加组件实现了这个缺失的功能?
问题
我希望能够通过命令行(见下文)在创建文档时附加一个/多个附件.我只能在Futon(Couchbase)中使用它,但只能在创建文档之后才能使用它.
我尝试过以下方法:
curl -X PUT 'http://username:password@localhost:5984/client_info'
curl -X POST 'http://username:password@localhost:5984/client_info' -H 'Content-Type: application/json' -d '{"client_type": "Private", "client_name": "John Doe","client_email": "john@doe.com","client_city": "Toronto","created_at": "2011-09-06 12:45:03","expires_at": "2012-01-01 00:00:00", "_attachments": {
"test01.jpg": {
"content_type": "image/jpeg",
"length": 30189
}
}
}'
Run Code Online (Sandbox Code Playgroud)
这只会导致以下错误:
{"error":"unknown_error","reason":"function_clause"}
Run Code Online (Sandbox Code Playgroud)
谢谢
Fauxton很漂亮,但它至少缺少一个与CouchDB一起使用的关键功能:浏览文档的修订历史记录.数据库权限接口也设法创建了我的数据库.
有没有办法让旧蒲团跑步?
关于用户及其文档的结构,我有一些概念性的问题.
为CouchDB中的每个用户提供他们自己的数据库来保存他们的文档是一个好习惯吗?
我已经读过,couchDB可以处理数千个数据库,并且每个用户拥有自己的数据库并不罕见.
原因:
提出这个问题的原因是我正在尝试创建一个系统,其中登录用户只能查看自己的文档而无法查看任何其他用户文档.
有什么建议.
先感谢您.
想要从 asp.net core web api 连接到 CouchDb 数据库,但我无法找到这样做的代码。
任何人都可以帮助我使用代码来做到这一点吗?这样做的“正常”方式是什么?
干杯!
couchdb ×10
couchdb-futon ×10
database ×2
asp.net-core ×1
couchbase ×1
erlang ×1
fauxton ×1
javascript ×1
mapreduce ×1
port ×1
reduce ×1
security ×1
ubuntu-10.04 ×1