diff --git a/types/rethinkdb/index.d.ts b/types/rethinkdb/index.d.ts index eb0e30b058..0045d3ddbc 100644 --- a/types/rethinkdb/index.d.ts +++ b/types/rethinkdb/index.d.ts @@ -277,6 +277,25 @@ declare module "rethinkdb" { interface Sequence extends Operation, Writeable { between(lower: any, upper: any, index?: Index): Sequence; + /** + * Turn a sequence into an array or object, necessary when merging a sequence. + * + * See: https://www.rethinkdb.com/api/javascript/coerce_to/ + */ + coerceTo(key: 'array'): Expression; + coerceTo(key: 'object'): Expression; + + merge(object: Object): Sequence; + merge(cb: ExpressionFunction>): Sequence; + + /** + * Turn a sequence into an array or object, necessary when merging a sequence. + * + * See: https://www.rethinkdb.com/api/javascript/coerce_to/ + */ + coerceTo(key: 'array'): Expression; + coerceTo(key: 'object'): Expression; + filter(rql: ExpressionFunction): Sequence; filter(rql: Expression): Sequence; filter(obj: { [key: string]: any }): Sequence; diff --git a/types/rethinkdb/rethinkdb-tests.ts b/types/rethinkdb/rethinkdb-tests.ts index fb129b94a5..b70de79297 100644 --- a/types/rethinkdb/rethinkdb-tests.ts +++ b/types/rethinkdb/rethinkdb-tests.ts @@ -22,6 +22,13 @@ r.connect({ host: "localhost", port: 28015 }, function(err: Error, conn: r.Conne ) .run(conn, errorAndCursorCallback); + r.table("players").merge((player: r.Expression) => { + return { + teams: r.table("games").getAll(player('teamIds')).coerceTo('array'), + } + }) + .run(conn, errorAndCursorCallback); + const center = r.point(123, 456); r.table("geo") .getIntersecting(r.circle(center, 1000, { unit: "m" }), { index: "location" })