2016-10-09 6 views
0

so habe ich ein Projekt, wo ich auf eine db-Tabelle entweder nach ID oder Name zugreifen.Abrufen von Null-Daten bei Verwendung von Versprechen in Express

Meine Kategorie Route:

router.get('/name/:name', function(req, res) { 
    Category.fetchName(res, req.params.name); 
    console.log(res.name); 

}); 

Meine Kategorie Modell:

static fetchName(res, categoryName) { 
    categories.find({ 
     name: categoryName 
    }) 
    .then((doc) => { 
     res.send(doc); 
     console.log(doc); 

    }); 
} 

Wenn ich die console.log(doc) tun heraus bringt er den Druck der Array

[ { _id: 57f7d8382604126103f0113b, name: 'stuff' } ]

Aber wenn ich es zugreifen Auf meiner Route steht undefined. Was vermisse ich? Warum kann ich nicht auf die Daten zugreifen, die von der Datenbank in meiner Route abgerufen wurden?

Vielen Dank im Voraus!

Antwort

0

Sie werden res.name nicht erhalten, da Sie nirgends name property in res Objekt hinzufügen.

router.get('/name/:name', function(req, res) { 
    Category.fetchName(res, req.params.name, function(err, result) { 
    if (!err) { 
     console.log(result); 
     res.send(result); 
    } 
    }); 
}); 


static fetchName(res, categoryName,callback) { 
    categories.find({ 
     name: categoryName 
    }) 
    .then((doc) => { 
     callback(null,doc); 
     console.log(doc); 
    }); 
} 
+0

noch nicht res.name in meinen Routen zugreifen kann, heißt es noch „unbestimmt“, während ich das richtige console.log Ergebnis bekam, wenn es mein Modell zu tun ... – user2870415

+0

Seit seinem async Problem Ihres Versprechen nicht ist – abdulbarik

+0

Ich aktualisierte meine Antwort Sie können jetzt überprüfen, – abdulbarik

Verwandte Themen