Couchdb と D3 の統合に問題があります。D3 は、ドキュメント駆動型のデータ視覚化を実行する Javascript ライブラリです。Couchdb はドキュメント データベースです。彼らはお互いのために作られました。
D3 は、データの配列を Web ページの DOM 要素にバインドします。Web や本で見たほとんどの例では、人々は静的データ セットに取り組んでいます。通常、例では、Javascript に書き込まれた配列、またはページに読み込まれた text.csv ファイルを示します。
データベース ドキュメントから直接データを取得し、D3 にロードしたいと考えています。私はそれを行う方法が不明です。Web で、ある人がすべてのデータを配列として 1 つのcouchdb ドキュメントにロードし、couchdb.jquery 呼び出しでデータを index.html に取り込む例を 1 つ見たことがあります。
/ This function replaces the d3.csv function.
$.couch.db("d3apps3").openDoc("sp500", {
success : function (doc) {
var data = doc.data;
data.forEach(function(d) {
d.date = formatDate.parse(d.date);
d.price = +d.price;
})
私はdb.allDocsで似たようなことを試しました:
<script type="text/javascript">
$dbname = "dataset2";
$appname = "dataset2";
$db = $.couch.db("dataset2");
$db.allDocs({
success: function (data) {
console.log(data)
}
});
</script>
console.log にレンダリングするデータを取得できましたが、D3 と index.html に取得できませんでした。また、db.allDocs から生成されるデータストリームは、各ドキュメントの _id と _rev に限定されていることにも気付きました。
また、d3.json 呼び出しを使用して Couchdb ビューからデータを取得しようとしました。d3.json は既存の .json ファイルを探しているため、これは機能しません。
面白いことに、GET コマンドを使用して cURL でビューを呼び出し、データストリームを表示できますが、D3 にバインドできないようです。
~$ curl -X GET http://anywhere.com:5984/dataset2/_desing/list_view/_view/arnold
{"total_rows":25,"offset":0,"rows":[
{"id":"dataset.csv1","key":"0","value":null},
{"id":"dataset.csv2","key":"1","value":null},
{"id":"dataset.csv11","key":"10","value":null},
{"id":"dataset.csv12","key":"11","value":null},
どんなアイデアでも大歓迎です。