Neo4j查询在特定时间运行

时间:2016-05-29 03:53:03

标签: neo4j asp.net-core

目前,我正在使用asp.net核心和neo4j图形数据库制作应用程序。

我的应用程序提供了一个帐户注册系统,该系统向用户注册的电子邮件发送激活码,24小时后,如果用户没有点击活动链接,该帐户将被删除。

我的问题是:我可以在neo4j图数据库中编写一个触发器,在创建一个节点后24小时后自动运行以检查它是否已经过验证,如果没有验证则删除它。

有人能帮帮我吗?

谢谢:)

2 个答案:

答案 0 :(得分:3)

您可以使用apoc job management

1)创建用户:

CREATE (U:User {created_at: timestamp(), activated: false}) 

2)运行定期任务(每小时),其中包含未激活用户的列表,并检查激活时间,并在24小时内删除未激活帐户的人员:

CALL apoc.periodic.repeat('name',
    'MATCH (U:User {activated: false}) 
         WHERE timestamp() - U.created_at > 24 * 60 * 60 * 1000
     DETACH DELETE U', 
60 * 60)

答案 1 :(得分:1)

有多种解决方案可以解决这个问题:

第一个是名为neo4j-expire的neo4j插件,您可以在节点上设置time-to-live时间戳,该节点将在给定时间自动过期/删除:

https://github.com/graphaware/neo4j-expire

第二个解决方案是创建一个执行此检查的Cypher查询,并将其注册到neo4j-apoc https://neo4j-contrib.github.io/neo4j-apoc-procedures/#_job_management

中提供的作业管理程序