2016-05-29 12 views
5

Derzeit mache ich eine Anwendung mit asp.net Core und Neo4j Graph Datenbank.Neo4j Abfrage zu bestimmten Zeitpunkt ausgeführt

Meine Anwendung bietet ein Konto Registrierungssystem, die einen Aktivierungscode an Benutzer registrierte E-Mail senden und nach 24 Stunden, wenn Benutzer nicht auf den aktiven Link klicken, wird das Konto gelöscht.

Meine Frage ist: kann ich einen Trigger in Neo4j Grafik-Datenbank schreiben, um automatisch nach 24 Stunden nach einem Knoten erstellt wurde, um zu überprüfen, ob es verifiziert wurde oder nicht, und löschen Sie es, wenn es nicht getan hat.

Kann mir bitte jemand helfen?

Danke :)

Antwort

3

können Sie apoc job management verwenden:

1) Erstellen Sie Benutzer:

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

2) Laufende periodische Task (jede Stunde), das eine Liste nimmt von nicht aktivierten Benutzern, und überprüft die Aktivierungszeit, und entfernen Sie diejenigen, die Konto nicht innerhalb von 24 Stunden aktivieren:

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

Es gibt mehrere Lösungen, die damit umgehen:

erste ist eine Neo4j Plugin neo4j-expire genannt, wo Sie einen time-to-live Zeitstempel auf einem Knoten gesetzt und dieser Knoten wird automatisch abgelaufen/vom Plugin zum angegebenen Zeitpunkt gelöscht:

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

die zweite Lösung ist eine Cypher Abfrage zu erstellen, die diese Prüfung und Registe führt r mit dem Job-Management-Verfahren in neo4j-apochttps://neo4j-contrib.github.io/neo4j-apoc-procedures/#_job_management

Verwandte Themen