Javascript 关于'的错误;无效的JSON';使用couchDB视图,但使用json';很好
我正在尝试在CouchDB上设置以下视图Javascript 关于'的错误;无效的JSON';使用couchDB视图,但使用json';很好,javascript,views,couchdb,Javascript,Views,Couchdb,我正在尝试在CouchDB上设置以下视图 { "_id":"_design/id", "_rev":"1-9be2e55e05ac368da3047841f301203d", "language":"javascript", "views":{ "by_id":{ "map" : "function(doc) { emit(doc.id, doc)}" },"from_user_id":{ "map" : "functi
{
"_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, doc)}}"},
"to_user_id":{
"map" : "function(doc) {if (doc.to_user_id){ emit(doc.to_user_id, doc)}}"},
"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}"
}
}
}
我知道它不是无效的JSON,因为我使用Python2.6中内置的“JSON”库对它进行了测试,它可以正常加载。JS出错给我错误“必须对函数求值”
我已经用od检查了文件,没有隐藏的控制字符,我的系统设置为UTF-8。我使用的是CouchDB版本0.10.1
还有什么问题吗?可能需要将JSON放在单引号中:
curl -vX PUT http://localhost:5984/dbname/docid -d '{"foo" : "bar"}'
对我有用但是
curl -vX PUT http://localhost:5984/dbname/docid -d {"foo" : "bar"}
抛出你提到的错误。我猜当你省略单引号时,shell会以某种方式干扰你发送的数据
编辑:我正在使用bash。@titanoba暗示了这个问题: 期望实际数据作为参数 如果要在文件中提供数据,需要在其前面加上
@
:
curl -X PUT -d @keys.json $CDB/_design/id
您最近是否从源代码更新了CouchDB?如果是这样,请确保删除所有旧文件。原因
curl -vX PUT http://localhost:5984/dbname/docid -d {"foo" : "bar"}
不起作用的是,shell使用单引号对引号进行插值,从而使引号转义。keys.json是否可能采用16位编码,如UTF-16或UCS-2?仅供参考,您的json在Chrome、Internet Explorer和Firefox中解析得很好。@Joachim_Sauer file keys.json将其显示为“ascii文本”,如果使用'od-c'检查,则没有恐怖控制字符,我的系统默认为utf-8,我很困惑curl-v有帮助,因为它会转储发送到服务器的实际请求。我知道这一点,但我忘记了。一记耳光+1:这是一个不断给予和给予(并为我节省时间)的答案。谢谢。
curl -vX PUT http://localhost:5984/dbname/docid -d {"foo" : "bar"}