我试图在CouchDB上设置以下视图
{ "_id":"_design/id","_rev":"1-9be2e55e05ac368da3047841f301203d","language":"javascript","views":{ "by_id":{ "map" : "function(doc) { emit(doc.id,doc)}" },"from_user_id":{ "map" : "function(doc) { if (doc.from_user_id) {emit(doc.from_user_id,doc)}}"},"from_user":{ "map" : "function(doc) { if (doc.from_user) {emit(doc.from_user,"to_user_id":{ "map" : "function(doc) {if (doc.to_user_id){ emit(doc.to_user_id,"to_user":{ "map" : "function(doc) {if (doc.to_user){ emit(doc.to_user,doc)}}" },"max_id":{ "map" : "function(doc) { if (doc.id) {emit(doc._id,eval(doc.id))}}","reduce" :"function(key,value) { a = value[0]; for (i=1; i <value.length; ++i){a = Math.max(a,value[i])} return a}" } } }
当我尝试使用curl“PUT”时:
curl -X PUT -d keys.json $CDB/_design/id {"error":"bad_request","reason":"invalid UTF-8 JSON"}
我知道这不是无效的JSON,因为我使用Python 2.6中内置的’json’库测试它,它加载正常. JS螺丝起来给我错误’必须评估一个功能’
我已经用od检查了文件,没有隐藏的控件字符,我的系统设置为UTF-8.我使用CouchDB版本0.10.1
还有什么问题可以吗?
解决方法
@titanoba暗示了这个问题:
-d
option of curl预计实际数据为参数!
如果要在文件中提供数据,则需要以@为前缀:
curl -X PUT -d @keys.json $CDB/_design/id