вы должны узнать о asynchronous
, callback
и promise
в javascript, после этого вы сможете легко работать с javascript, и мой код ниже может быть вам понятен.
К счастью для нас, сейчас 2018, синтаксис запуска synchronous function
очень прост с async / await. В этом случае getProducts
должен быть запущен synchronously
и должен быть таким:
app.get('/api/products/', async function(req, res, next) {
const myData = await mongo.getProducts();
res.send(myData);
});
edit: mongodb.js
должно быть немного обновлено:
exports.getProducts = function() {
return mongoClient.connect(url, {useNewUrlParser: true }, function(err, client) {
let db = client.db(dbName);
return db.collection('products').find({}).toArray( function(err, result) { .
if(err) throw err;
client.close();
return result;
}
})
}
Q: какая разница?
A: await
ожидает разрешения Promise
с value
. Так что getProducts
должен return
a Promise
.