1

Ich schreibe eine Cloud-Funktion auf Firebase, die einen Echtzeit-Datenbank-Trigger verwendet. Es feuert onWrite und dann muss ich eine Reihe von Befehlen mit Promises ausführen.Firebase-Funktion erwartet Versprechen oder Wert

Der Code wird ausgeführt, wenn ich ein Versprechen verwende und unzuverlässig wird, wenn ich eine Kette verspreche. Allerdings bekomme ich dies immer im Protokoll:

Function returned undefined, expected Promise or value

I-Werte zurückkehre, wo immer nötig und doch hatte ich am Ende dieser Nachricht auf. Mein Code ist unten angegeben:

exports.sendQuotationToCustomer = functions.database.ref('/company/{companyId}/quotations/{quotationId}').onWrite((event) => { 
    const companyId = event.params.companyId; 
    console.log('Direct Generate'); 
    const root = event.data.ref.root; 
    return root.child(`company/${companyId}/profile`).once('value') 
    .then((profileSnap) => { 
    console.log('1/Step'); 
    const profile = profileSnap.val(); 
    const docDefinition = helpers.createDocumentDefinition(profile, quotationData); 
    return docDefinition; 
    }) 
    .then((result) => { 
    console.log('2/Step'); 
    // Perform some manipulation over result. But meanwhile: 
    return result; 
    }) 
    .catch((err) => { 
    console.log(`Failed with error info: ${err}`); 
    }); 
}); 

Was könnte hier schief gehen?

+0

Was genau ist 'docDefinition'? –

+0

Hallo @DougStevenson, docDefinition ist für die PDF-Generierung, die ich in Schritt 2 verwenden möchte, sobald dies funktioniert. Ich habe hier einen Beispielcode geschrieben: 'https: // pastebin.com/Ubf10xqK' –

+0

Auch, was meinst du, wenn du sagst es wird" unzuverlässig "wenn du Kettenversprechungen hast? Machst du in Schritt 2 eine asynchrone Arbeit? –

Antwort

0

Ich vermute, dass Sie in dem Fang einen Fehler zurückgeben müssen die Warnung zu vermeiden:

.catch((err) => { 
    console.log(`Failed with error info: ${err}`); 
    return err; 
}); 

Dies gilt auch, wenn docDefinition waren undefined passieren könnte. Es könnte eine gute Idee sein, nach dem zu suchen und in diesem Fall einen Fehler zu werfen.

Verwandte Themen