Как реализовать условия по внутреннему присоединению в rethinkdb

У меня есть этот запрос:

 r.db('test').table('users').getAll("amazon_11",{index:"parent"})
    .innerJoin(r.table("posts"),function (posts, user) {return posts("employeeId").eq(user("employeeId"));}).zip()
    .innerJoin(r.table("posts_facebook"),function(left,right){return left('id').eq(right('post_id'))}).zip()

я хочу добавить условие в поле отметки времени в коллекции posts_facebook,

Я создал индекс в поле отметки времени.

Вот что я думаю:

  r.db('test').table('users').getAll("amazon_11",{index:"parent"})
    .innerJoin(r.table("posts"),function (posts, user) {return posts("employeeId").eq(user("employeeId"));}).zip()
    .innerJoin(r.table("posts_facebook"),function(left,right){return left('id').eq(right('post_id'))}).zip()
  .between(fromDate,toDate,{index:"approvedAt"})

Ошибка, полученная от rethinkdb, выглядит следующим образом:

e: ожидаемый тип TABLE_SLICE, но найденный SEQUENCE: VALUE SEQUENCE в:
r.db ("test"). table ("users"). getAll ("amazon_11", {"index": "parent"}). innerJoin (r.table ("posts"), функция (var_43, var_44) { return var_43("employeeId").eq(var_44("employeeId")); }).zip().innerJoin(r.table("posts_facebook"), функция (var_45, var_46) { return var_45("id")).eq(var_46("post_id")); }).zip(). Между ("2016-08-01 11:31:40", "2016-08-01 11:32:00", {"index": " ApproAt "})
Формат даты: ГГГГ-ММ-ДД ч: я: с

1 ответ

Решение

Если вы уже используете innerJoinЯ бы просто положил, что в теле второго innerJoin лайк .innerJoin(r.table("posts_facebook"),function(left,right){return left('id').eq(right('post_id')).and(right('approvedAt').gt(fromDate)).and(right('approvedAt').lt(toDate));}), Обратите внимание, что innerJoin будет очень медленным на больших столах, так что вы можете посмотреть на использование concatMap вместо.

Другие вопросы по тегам