如果用户名已被使用,那么尝试创建用户但因适当反馈而失败的最佳方法是什么?
问问题
793 次
2 回答
3
还不是线程安全的,但MERGE
它是执行此操作的正确方法。你可以做这样的事情,在返回之前检查匹配的属性。这种依赖于 timestamp() 为整个查询返回相同值的事实,记录在案:http ://docs.neo4j.org/chunked/milestone/query-functions-scalar.html#functions-timestamp 。
MERGE (u:User { username:"test" })
ON CREATE u
SET u.created = timestamp()
WITH u
WHERE u.created = timestamp()
RETURN u
第二次运行这个,你没有得到任何结果。
于 2013-07-15T21:23:32.417 回答
2
只是对上面 Wes 答案的补充,如果您将自己的时间戳传递给合并,则可以避免WITH
使用 Cypher 的部分。
MERGE (u:User { username:"test" })
ON CREATE u
SET u.created={myTimestamp}
RETURN u
然后只需检查您提供的时间戳是否与返回的时间戳匹配(即。u.created
)。我需要这样的密码,因为它总是返回用户对象。
于 2013-07-15T23:48:56.003 回答