Когда пользователи проходят проверку подлинности, я хочу расширить свой шифровальный запрос, чтобы указать, имеет ли пользователь отношение :LIKED
к узлу элемента, и включить это в мою проекцию как логическое значение.
, еслиПользователь аутентифицирован. Я предоставлю {userId}
, в противном случае параметр {userId}
будет нулевым.Я исследовал WHERE
и exists
, но это не похоже на правильный подход.
Возможно ли это вообще в cypher в настоящее время?
РЕДАКТИРОВАТЬ:
Это представляется возможным при использовании OPTIONAL MATCH
в моих первых тестах, но правильный ли это подход?
MATCH (m:Media {mediaId: {itemId}})
WITH m, labels(m) as labels
OPTIONAL MATCH (m)<-[r:LIKED]-(:Person {userId: {userId}})
RETURN m { .*, labels, liked: exists(properties(r).createdAt) } AS result
LIMIT 1
Наконец, я могу иметьнесколько взаимосвязей, которые могут присутствовать, только если пользователь, выполняющий запрос, аутентифицирован, а параметр userId не равен NULL
.
. Любые предложения или улучшения будут фантастическими для более опытных пользователей шифров.