尝试创建用户的最佳方法是什么,但如果已经使用了用户名,则会以适当的反馈失败?
答案 0 :(得分: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
第二次运行时,您不会得到任何结果。
答案 1 :(得分:2)
只是Wes'的补充。如上所述,如果您将自己的时间戳传递给合并,则可以避开Cypher的WITH
部分。
MERGE (u:User { username:"test" })
ON CREATE u
SET u.created={myTimestamp}
RETURN u
然后只需检查您提供的时间戳是否与返回的时间戳匹配(即u.created
)。我需要这样的密码,因为它总是返回用户对象。