Как создать временную шкалу в neo4j (с заблокированным пользователем) - PullRequest
0 голосов
/ 04 декабря 2018

В настоящее время я работаю над сайтом социальной сети типа Instgram, где пользователь может

  1. Зарегистрироваться
  2. Подписаться на других пользователей
  3. Блокировать других пользователей
  4. Можно ставить лайки и делиться постами других пользователей
  5. Закладка поста

Это очень типичный социальный сайт.

Мое требование - создать временную шкалу на основе активности пользователей, которой я следую, также я не должен видеть ни одного сообщения своих заблокированных пользователей.Для этого я использую следующий запрос:

MATCH (n:User {user_id:'5b89012a1134ec4daa491d64'})-[fr:FOLLOWS]->(f:User)-[p:CREATED|:SHARED|:LIKED]->(d:Post)
WHERE ( fr.is_blocked=false  )
WITH d, n OPTIONAL MATCH (n)-[m:MYBID]->(d) WITH d,n,m as mybid_status
RETURN d, SIZE(()-[:LIKED]->(d) ) as likecount, SIZE( ()-[:SHARED]->(d) ) as sharecount,
SIZE( (n)-[:LIKED]->(d) ) as likestatus, SIZE( (n)-[:SHARED]->(d) ) as sharetatus,
SIZE( (n)-[:BOOKMARK]->(d) ) as bookmarkstatus, SIZE( (n)-[:REPORT]->(d) ) as reportstatus,
SIZE( (n)-[:MYBID]->(d) ) AS mybid, mybid_status,
SIZE( (n)-[:FOLLOWS]->(:User {user_id:d.owner_id}) ) as is_follow, count(*) as postcount
ORDER BY d.updated_at DESC
SKIP 0 LIMIT 10

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

Я использую пакет neo4j 3.4 и py2neo python.

Кто-нибудь может подсказать, где я делаю не так?

Любая помощь будет высоко оценена

Спасибо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...