問題タブ [couchdb-nano]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
node.js - CouchDB の結果を値で並べ替える
私は CouchDB (および一般的な NoSQL) の初心者であり、簡単な Node.js + Express + nano アプリを作成してその感触をつかんでいます。これは、'title' と 'author' の 2 つのフィールドを持つ単純な書籍のコレクションです。
文書例:
縮小機能:
CouchDB はキーでソートし、'descending=true' クエリ パラメータをサポートしているため、タイトルのソート順を切り替えるフィルタを UI に実装するのは簡単でした。これが結果セットのキーです。UI は次のとおりです。
昇順または降順でタイトルを並べ替えるためのリンク付きの書籍のリスト
しかし、私は著者フィールドに対してこれを行う方法について完全に途方に暮れています。
私はこの質問を見てきました。これは、投稿者が数値のreduce値でソートするのに役立ちました。また、リストを使用してreduce値でソートするブログ投稿も読みましたが、これを行う方法は見たことがありませんreduce のない文字列値。
node.js - ドキュメントのリストについて Cloudant (node.js モジュールを使用) データベースにクエリを実行しますか?
次のようなドキュメントを含むデータベースを考えてみましょう。
これで、ユーザー名のリストが表示されます。つまり、次のとおりです。
そして、私は彼らの電子メールのリストを返します:
この問題を効率的に解決するにはどうすればよいですか?
Node.js を使用して Cloudant (nano ライブラリーに基づく) データベースに照会する。
node.js - nanoを使用してcouchDBにセッションを渡す
セッションを正しく CouchDB に渡すことができません。これが私のコードです:
しかし、電話をかけると、常に次のメッセージが表示されます。
mapreduce - 入力キーを使用して CouchDB で区別する
次のようなドキュメントが与えられた場合:
カテゴリを渡してキーを入力し、個別の行を取得できるように"cat1"
し"type1"
たい.["line1", "line2"]
"cat2"
"type1"
["line2", "line3"]
キーを渡さない場合は簡単です:
地図
減らす
私は group: true を使用していますが、キーを渡すときにこれを処理する方法に困惑しています。
PS、ノードとナノを使用しているため、クエリは次のようになります。
javascript - NodeJS は、couchDB から nano を選択して入力します
複数のドキュメントを含む複数のcouchDBデータベースがあります。nodeJSとcouchDBのnanoクライアントを使用して、3つ以上のhtml selectsにcouchDBのデータを入力しようとしています。データベース内のすべてのドキュメントを取得して、それらを選択に挿入しようとしています。これを達成する方法についてのアイデアはありますか?できれば単一のリクエストで。
LE: list メソッドを使用して nano ドキュメントを利用しようとしています: https://github.com/dscape/nano#dblistparams-callback
問題は js が非同期であることです。ページがレンダリングされる前にリストで必要なすべての情報を収集できません。少なくとも私はこれを達成する方法を知りません。それが私がやろうとしていることです。必要なデータベースが 1 つだけであれば問題ありませんが、複数のデータベースにクエリを実行する必要があります。
複数のコールバックを実行するか、nodejs のイベント パッケージを使用することを考えましたが、コードは絶対的な悪夢になるでしょう。
node.js - BluebirdはNodeJSで約束しますが、それには到達しません
私は、CouchDbで使用されるnanoライブラリを使用して、NodeJでbluebirdの約束を使用しようとしています。私はpromisfyを使用し、見たときに新しい非同期メソッドを取得します。次の例では、nano.db.listAsync
呼び出しは正常に機能しますが、.then または .catch には到達しません。
ここで何が問題なのですか?
database - カウチデータベースの更新設計ドキュメント
nano
次のスクリプトを使用して、couchdb に接続する nodejs アプリケーションがあります。
このスクリプトはサーバーが起動するたびに実行されるため、サーバーが (再) 起動するたびにデータベース 'foo' を作成しようとし、データベースが既に存在する場合は黙って失敗します。
この方法は実際にはアプリケーション レベルでデータベースを維持しており、新しいデータベースを追加するときに手動でデータベースを作成する必要がないため、このアイデアがとても気に入っています。
このアプローチをさらに一歩進めて、アプリケーション レベルから設計ドキュメントを維持しようとしました。
明らかに、これは設計ドキュメントが存在しない場合にのみ挿入されます。しかし、設計ドキュメントを更新し、それを更新したい場合はどうすればよいでしょうか?
私は試した:
ここでの問題は、サーバーが再起動するたびに設計ドキュメントが更新されることです(たとえば、再起動するたびに新しい _rev を取得します)。
今...私の質問:)
1: これは、CouchDB をデータベースと設計でブートストラップするための悪いアプローチですか? 展開プロセスの一部として、いくつかの移行手順を検討する必要がありますか?
2: 基本的にすべての展開とサーバーの再起動のたびに、設計ドキュメントが多くの_rev を取得することは問題ですか? ドキュメント自体は変わっていないのに?もしそうなら、ドキュメントが変更された場合にのみドキュメントを更新する方法はありますか? (アプリケーションで_revを手動で値に設定することを考えましたが、それが良いアイデアかどうかは非常にわかりません)。
couchdb - Nanodb レプリケーション フィルター
「サンプル」という名前のデータベースがあります
次のような _design doc があります。
そして、次のようなサンプルデータ:
私のノードサーバーでは、 nano db を使用し、 filter でレプリケーション機能を使用してみます。次のようになります。
この操作の応答は次のとおりです。「json キーがありません: newView」
このフィルターを複製するにはどうすればよいですか?
ありがとう