1

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 つのフィールドを連結できますが、そのインデックスを使用してクエリを実行するにはどうすればよいでしょうか?

ありがとう。

4

2 に答える 2

2

ドキュメントの例のように、ネストされていないクエリで使用できますr.rowが、ネストされたクエリの場合は、実際の関数を使用する必要があります。indexCreate内部に aを入れるdoと、ネストされたクエリの一部になりました。

代わりにクエリr.table('someTable').indexCreate("indexName", [r.row("field1"), r.row("field2")])を書くとうまくいくはずです。r.table('someTable').indexCreate('indexName', function(row) { return [row('field1'), row('field2')]; })

于 2015-12-08T23:22:31.620 に答える