Sono consapevole che il driver Node per Mongo può essere promisified utilizzando librerie esterne. Ero curioso di vedere se promesse ES6 potrebbero essere utilizzati con MongoClient.connect
, così ho provato questo (usando Babele 5.8.23 a transpile):Utilizzo di promesse native ES6 con 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);
}
);
L'uscita è {Promise <pending>}
. Qualsiasi cosa abbia a che fare con i cursori sembra dare un risultato simile. C'è un modo per aggirare questo o sto abbaiando completamente dall'albero sbagliato?
Modifica: nodo versione 4.1.0.
Buona dolore. Grazie, a quanto pare ho continuato a fissarlo per troppo tempo! –
Abbiamo tutti quei tempi :) – loganfsmyth
IME, non c'è bisogno di 'err => {console.log (err}' - basta mettere 'console.log' nel parametro di errore' .then' – Alnitak