我有一个 CouchDB 数据库(v1.2.0),其中包含以下文档:
{
"_id": "pages/1",
"_rev": "15-56ad5a5e879206edb04a7a62105dd25d",
"content": "<html lang=\"en\"><head><title>Page Title</title></head></html>"
}
根据这篇文章,我应该简单地写一个这样的视图:
// by_lang
function(doc) {
var html = new XML(doc.content);
emit(html.@lang, {title: html.head.title.text()});
}
, 从 XML 中获取数据。
不幸的是,这不起作用。起初我认为我下载的 CouchDB 二进制文件不包括包含 E4X 的 SpiderMonkey,但事实并非如此。如果我添加一条log(html);
语句,我可以看到 XML 已正确解析(@ Erlang 窗口)。
Erlang 窗口指出我的代码有问题的是:
Log :: function raised exception (new TypeError("String.prototype.toJSON called on incompatible XML", "../share/couchdb/server/main.js", 1138)) with doc._id pages/1
我打开了main.js
文件,中断的代码如下:
// moving this away from global so we can move to json2.js later
toJSON : function (val) {
return JSON.stringify(val);
},
谷歌搜索那个错误把我带到了这个提到 json2.js 的页面(上面代码的注释中也提到了它。
任何想法如何解决这个问题?有没有可能这是一个错误,或者我在这里做错了什么?