Jestem świadomy, że sterownik Node dla Mongo może być promisified przy użyciu zewnętrznych bibliotek. Byłem ciekaw, czy ES6 obietnice mogą być wykorzystane z MongoClient.connect
, więc próbowałem to (przy użyciu Babel 5.8.23 do transpile):Używanie natywnych obietnic ES6 z MongoDB
import MongoClient from 'mongodb';
function DbConnection({
host = 'localhost',
port = 27017,
database = 'foo'
}) {
return new Promise((resolve, reject) => {
MongoClient.connect(`mongodb://${host}:${port}/${database}`,
(err, db) => {
err ? reject(err) : resolve(db);
});
});
}
DbConnection({}).then(
db => {
let cursor = db.collection('bar').find();
console.log(cursor.count());
},
err => {
console.log(err);
}
);
Wyjście jest {Promise <pending>}
. Coś związanego z kursorami wydaje się dawać podobny rezultat. Czy istnieje sposób na obejście tego problemu lub czy szczerzę zupełnie niewłaściwe drzewo?
Edytuj: wersja węzła 4.1.0.
Dobry Boże. Dzięki, najwyraźniej długo wpatrywałem się w to! –
Wszyscy mamy te czasy :) – loganfsmyth
IME, nie ma potrzeby "err => {console.log (err)' - wystarczy wpisać 'console.log' w parametrze błędu' .then' – Alnitak