我正在开发一个系统,允许用户隐藏对话中的消息。目前,系统的设计使得消息存储为用户之间的关系,指向(发件人) - [] - >(收件人)。
我遇到的问题是,我希望任何一个用户都能够隐藏在他们一边的消息。我正在尝试开发代码,以便调用相同的函数,无论隐藏它的用户是发件人还是收件人,但在set语句中使用条件逻辑时遇到问题。
我目前的尝试如下所示。
任何建议都将不胜感激
由于
// data.h
class data {
public:
string a;
double b;
uint8_t c;
} /* including ";"?? */
答案 0 :(得分:3)
您需要合并startNode
(用于获取方向)和conditional statement
(用于设置属性):
MATCH (userLoggedIn:User {EmailAddress:'email'})
-[r:USER_SENTMESSAGE {Id: '123456'}]-
(otherUser)
WITH userLoggedIn, r, otherUser
FOREACH (ift in CASE WHEN userLoggedIn = startNode(r) THEN [1] ELSE [] END |
SET r.HideFromSender = true
)
FOREACH (ift in CASE WHEN otherUser = startNode(r) THEN [1] ELSE [] END |
SET r.HideFromReceiver = true
)
更新。事实上,从逻辑上讲,您可以更轻松:
MATCH (userLoggedIn:User {EmailAddress:'email'})
-[r:USER_SENTMESSAGE {Id: '123456'}]-
(otherUser)
WITH userLoggedIn, r,
CASE WHEN userLoggedIn = startNode(r) THEN true ELSE false END as ift
SET r.HideFromSender = ift,
r.HideFromReceiver = NOT ift