問題タブ [rethinkdb-javascript]
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 - RethinkDB の接続は短命ですか、長命ですか?
restify に基づく Node.js のプロジェクトがあり、データベースとして RethinkDB を使用しています。問題は、コードのさまざまな部分 (ルート ハンドラー、ミドルウェアなど) から RethinkDB にアクセスする必要があることですが、すべての要求に対してではありません。この場合、RethinkDB に接続する最良の方法は何ですか?
次のオプションが表示されます。
どこかに保存されている 1 つの長い接続がある (現在使用しているアプローチ)。
各 HTTP リクエストで RethinkDB に接続します。これは、接続の一部が使用されない可能性があります。
各部分で個別に接続します。HTTP 要求ごとに複数の接続が可能ですが、無駄な接続はありません。
この質問をするのは、Rethink が短い接続と長い接続をどれだけうまく処理できるか、またそれらがどれだけ高価かがわからないからです。たとえば、MongoDB は長い接続を好みますが、RethinkDB ドキュメントのすべての例では、HTTP 要求ごとに 1 つの接続を使用しています。
rethinkdb - rethinkdb update ネストされた配列
私は次の構造を持っています:
id_tweet:"389193311908413440" から status_tweet:1 を設定したい
id_tweet:"389193311908413440" で配列の要素を取得できます
しかし、フィールドを更新しようとすると、エラーが発生します。
前もって感謝します
rethinkdb - RethinkDB: オブジェクトから最後の N を取得する
オブジェクトから最後の N 個のキーと値のペアを取得する効率的な方法は何でしょうか? キー名でソートされ、N は任意の整数です。返される型もオブジェクトであることが理想的です。
node.js - RethinkDB 接続は「開いている必要があります」が閉じられない
Node.js で hapi.js と一緒に RethinkDB を使用しています。私のメイン アプリケーションは、open 接続を hapi.js プラグインに渡します。main-script 内で接続を使用すると正常に動作しますが、プラグイン内で何かを実行すると、次のエラーがスローされます。
接続が閉じられるかどうかを調べようとしましたが、追加されたリスナーが起動しませんでした。
connection.close()
手動で出力を呼び出すと、イベントリスターが一般的に機能していることを確認できます!!closed
。
渡されたオブジェクトがコピーとしてプラグインに渡されるかどうか、GitHubの hapi.js コミュニティに尋ねましたが、実際にはそうではありません。
エラーをスローするコードは次のとおりです。
要約すると:
- 接続が閉じられることはないため、接続は開いている必要があります
- (プラグイン内:) RethinkDB が言うように、データベースからデータを取得できません。
First argument to 'run' must be an open connection.
接続が開かなくなった理由を調べる方法はありますか?
RethinkDB バージョン: 2.1.5
hapi.js バージョン: 11.1.2
ありがとう!
rethinkdb - グループ演算子を使用する場合の ISO8601 の代わりの時間疑似型
RethinkDB を使い始めたばかりですが、実行中のいくつかのクエリで何が起こっているのかを理解するのに苦労しています。
問題は、JSON API を公開するNodeJS アプリ(rethinkdbdash ドライバーを使用)から日時型のオブジェクトをクエリすることです 。オブジェクトを個別にクエリすると、次のようになります。
タイムスタンプ フィールドの JavaScript 日付を取得しますが、クエリで group by 演算子を次のように実行すると、次のようになります。
代わりに、同じタイムスタンプ フィールドの日時疑似型 (これが正しい名前だと思います) を取得します。何かのようなもの:
これは予想される動作ですか?その背後にあるロジックは何ですか?
解析をクライアントに透過的にするために、このデータ型ではなく、シリアル化された iso8601 日付を JSON で返したいと思います。
ありがとう、
更新 これは、2.2.7 より前のバージョンの既知の問題です。ここで修正。
rethinkdb - RethinkDB (javascript) でのセカンダリ インデックスの作成がドキュメントのように機能しない
RethinkDB の 2 つのフィールドに基づいて、JavaScript で (実際にはrethinkdbdash
ドライバーを使用して) インデックスを作成しています。コードは次のようになります。
r.table('someTable').indexList().contains("indexName").do(containsIndex => {
return r.branch(
containsIndex,
{created: 0},
r.table('someTable').indexCreate("indexName", [r.row("field1"), r.row("field2")])
);
}).run();
したがって、インデックスがまだ存在しない場合は、条件付きでインデックスを作成します。分岐は、単一フィールド インデックスに対して機能します。ただしReqlCompileError: Cannot use r.row in nested queries. Use functions instead
、この場合は a を返します。
ドキュメント ( https://www.rethinkdb.com/api/javascript/index_create/ ) には、次の例が明確に示されています。
r.table('comments').indexCreate('postAndDate', [r.row("postId"), r.row("date")]).run(conn, callback)
それで、私は何が欠けていますか?rethinkdbdash ドライバーを使用すると何か変化がありますか? 関数を使用する場合 (エラー メッセージで示唆されているように)、2 つのフィールドを連結できますが、そのインデックスを使用してクエリを実行するにはどうすればよいでしょうか?
ありがとう。
rethinkdb - rethinkdb javascript ドライバーで変更をサブスクライブする場合、カーソル リソースをクリーンアップする必要がありますか?
変更フィードをサブスクライブする場合、リソース/接続/その他を管理するためにカーソルが範囲外になる必要がある場合、カーソルをクリーンアップまたは閉じる必要がありますか??
rethinkdb ドライバーは、範囲外の接続とリソースをクリーンアップするのにどれくらい賢いですか?