2017-07-10 3 views
-3

Ich habe drei Quellen:Versprechen Flusskontrolle

  1. Hotels
  2. Adresse
  3. Bild

Ein Hotel eine Adresse, aber viele Bilder machen können. Beim Speichern aller drei auf einmal muss ich zuerst die Hoteldetails speichern und dann die Hotel ID nehmen, die ich mit der Adresse und den einzelnen Bildern assoziiere und sie einzeln speichern soll.

Jetzt denke ich, dass ich Bilder und Adresse parallel speichern kann und wenn etwas fehlschlägt, sollte ich in der Lage sein, die Transaktion rückgängig zu machen. Beim Speichern von Bildern kann ich Promise.all verwenden.

Was sollte der Promise-Chain-Flow sein, während alle Ressourcen unter Berücksichtigung der Beziehungsbedingungen gespeichert werden?

Lassen Sie mich mehr klar sein, ich möchte so etwas wie:

A 
/\ 
B C 

Wo bot B und C den gleichen Wert von A. zurückgegeben bekommen

+1

Klingt so, als könnten Sie die Adressspeicherung zusammen mit allen Bildeinsparungen in derselben 'Promise.all()' ' –

+0

zusammenfassen Zeigen Sie uns, was Sie versucht haben. Stackoverflow ist kein kostenloser Code-Schreibdienst. Das Ziel ist, Ihnen zu helfen, ** Ihren Code ** zu reparieren, wenn es nicht wie erwartet funktioniert, nicht Ihre Arbeit für Sie tun – charlietfl

Antwort

0

Man könnte so etwas tun:

function createHotel(data) { 
    // Create your hotel 
} 

function createAddresses(addresses, hotelId) { 
    // Create addresses with hotelId 
} 

function createImages(images, hotelId) { 
    // Create images with hotelId 
} 

createHotel({ name: 'Test' }) // I don't know your structure, this is just placeholder 
    .then(function(hotel) { 
    return Promise.all([ 
     createAddresses(addresses, hotel.id), 
     createImages(images, hotel.id) 
    ]); 
    }) 
    .then(function() { 
    // Everything was created successfully 
    console.log('Done!'); 
    }) 
    .catch(function(err) { 
    // Rollback here 
    console.log(err); 
    }) 
+0

Warum der Downvote? –

+0

Ich bin auch überrascht, wie auch immer, wenn ich statt "Done" die neu erstellte Hotel ID brauche? – CodeYogi

Verwandte Themen