次のようなドキュメントを含む 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 に言及しているこのページにたどり着きました (これは、上記のコードのコメントでも言及されています。
これを解決する方法はありますか?これがバグである可能性はありますか、それともここで何か間違っていますか?