2017-08-18 1 views
1

Ich möchte mein Benutzer ein Laden-Symbol angezeigt werden, bis die Datenbank reagiert, dann auf die richtige Seite umgeleitet werden.Umleiten von Benutzer mit Datenbank-Callback-Funktion - HAPI

ist mein Code entlang der Linien von:

// handler 
function handler(request, reply) { 
    reply.view('loading') // show loading with css 

    // do database stuff... 

    // database callback function 
    function db_callback_function() { 
    reply.redirect('user/page') // after db responds, redirect. 
    } 
} 

Hapi sagt, dass ich nur einmal die Antwort-Schnittstelle verwenden können:

Unhandled promise rejection (rejection id: 1): Error: reply interface called twice 

Wie kann ich meinen Benutzer nach die Datenbank umleiten Ladungen?

Edit: Ich weiß, dass ich den Lader mit Front-End zeigen muss. Ich weiß einfach nicht, wie mein hinteres Ende meinem Frontend erzählen würde, wenn ich umleiten sollte.

+0

Wenn Ihr Backend nur eine REST-Schnittstelle ist, müssen Sie einen Spin-Loader mit JS in Ihrem Frontend hinzufügen. – lumio

Antwort

1

Eine Anfrage kann nur einmal beantwortet werden. Sie sollten die "Lade Sachen" auf Ihrer Frontend-Seite nicht Backend tun.

Wenn Sie also eine HTTP-Anfrage gesendet haben, sollten Sie Ihren Status als Laden markieren.

Für die Beispiel-Code, sollte Servercode ändern zu:

// handler 
function handler(request, reply) { 
    // reply.view('loading') <- REMOVE THIS LINE 

    // do database stuff... 

    // database callback function 
    function db_callback_function() { 
    reply.redirect('user/page') 
    } 
} 

In diesem Fall, wenn Ihr Frontend die Antwort erhalten, dann wird es auf die entsprechende Seite umleiten.

+0

Wie würde das Front-End wissen, wann es auf die entsprechende Seite umgeleitet werden muss? –

+0

Bitte sehen Sie meine aktualisierte Antwort, kurz - Sie haben keine ganze Seite für den Ladezustand, tun Sie es einfach mit js und css. –

+0

Sie sagen *, wenn Ihr Frontend die Antwort erhalten hat *. Wie wird es das machen? Wie wird mein Frontend die Antwort erhalten? –