2016-12-15 16 views
0

Im работает над какой-то социальной сетью, в которой люди могут делать сообщения о теме и как они.Получение сообщений с информацией о пользователях в rethinkdb

У меня проблемы с отслеживанием пользователей.

Схема следующая:

пользователей: {идентификатор пользователя: "someId", любит: [ "idPost1", "idPost4", ...]}

Сообщений: {сообщения дан: "someId", тема: "idTopic", PostContent: "someContent"}

Мне нужен запрос, который может:

  1. Возьмите все сообщения от определенной темы, как это :.

    r.table ('сообщений') фильтр ({ темы: idTopic }).. Работать(), а затем (сообщения => res.json (сообщения))

  2. Посмотрите, чтобы увидеть если текущий пользователь (заданный идентификатором пользователя) понравился любой из сообщений в этой конкретной теме. Затем верните JSON со всеми сообщениями на эту тему, а те, которые нравятся пользователю с «like: true».

Im возникли проблемы с шагом 2,

Пожалуйста, дайте мне знать, если данные им-моделирования неправильный путь, или если вы можете думать о любом случае я могу выполнить шаг 2.

Спасибо!

ответ

0

Эта функция выполняет то, что вы ищете в javascript. (Испытано с помощью проводника данных)

r.db("test").table('posts').filter({ topic: "idTopic" }).merge(function(post){ 
    return {liked: r.table('users').filter({userId: "someId"})(0)('likes').contains(post("postId")) }; }) 

Функция слияния в основном перебирает каждый пост и добавляет поле любил его. Функция contains проверяет, находится ли идентификатор posts в массиве like и возвращается непосредственно как значение истины.