• Das Erstellen neuer Accounts wurde ausgesetzt. Bei berechtigtem Interesse bitte Kontaktaufnahme über die üblichen Wege. Beste Grüße der Admin

Promises zum ersten mal einsetzen/Fehler

Chromer

New member
Hallo Leute, ich würde gerne zum ersten mal Promise einsetzen und kriege das nicht so recht hin.
Situation: Aus meiner Router kommt bsp. eine Anfrage: getBooks.
Die ganze Abfrage mit callback, möchte ich in einem promise verstecken.
D.h. bei myPromise.then(....sende eine Antwort).catch(....sende status 500)
So stelle ich mir das vor. Vllt. gibt es schönere Wege.

mein Code
Code:
function getBooks(req, res) {

    /*Promise ansprechen*/
    promiseBooks(req, res);

}

function promiseBooks(req, res){

    /*Promise starten*/
    return Bookmark.find({}).exec();

}

/*Promise ausführen*/
promiseBooks(req, res).then(function(books){
    if(books.length===0){
        logger.warn('No books availible');
        res.status(200).json({
            bookmarks: books

        });
    }else if(books === undefined){
        res.status(500).json({
            
            bookmarks: bookmarks
        });
    }else{
        res.status(200).json({
            
            bookmarks: books
        });
    }

})
    .catch(function(err){
        logger.error({error:err},'FAIL TO RETRIVE BOOKS');
        
        res.status(500).json({
            
            books: books
        });
    });

Irgendwie bekomme ich "undefined" für req, res.
Habe ich hier ein Design-Fehler? wie könnte ich am besten die Callsbacks verstecken in diesem Fall?

Danke für jeden Tipp.
 
Irgendwie bekomme ich "undefined" für req, res.
So wie der Code da steht stimmt das auch. die Variablen werden schließlich nirgends definiert.

wie könnte ich am besten die Callsbacks verstecken in diesem Fall?
bei Promises geht es nicht darum Callbacks zu verstecken, sondern um ein effizienteres Arbeiten damit.

Und dann ist deine promiseBooks() Funktion auch ziemlich nutzlos, so wie sie da steht.
 
Zurück
Oben