上記の回答のいずれも、bluebirdやq、またはその他の豪華なライブラリなしでこれを行う方法について言及していないので、これに2セントを追加しましょう。
ネイティブES6Promiseを使用して挿入を行う方法は次のとおりです
'use strict';
const
constants = require('../core/constants'),
mongoClient = require('mongodb').MongoClient;
function open(){
let url = constants.MONGODB_URI;
return new Promise((resolve, reject)=>{
mongoClient.connect(url, (err, db) => {
if (err) {
reject(err);
} else {
resolve(db);
}
});
});
}
function close(db){
if(db){
db.close();
}
}
let db = {
open : open,
close: close
}
module.exports = db;
open()メソッドをpromiseを返すメソッドとして定義しました。挿入を実行するために、これが以下の私のコードスニペットです
function insert(object){
let database = null;
zenodb.open()
.then((db)=>{
database = db;
return db.collection('users')
})
.then((users)=>{
return users.insert(object)
})
.then((result)=>{
console.log(result);
database.close();
})
.catch((err)=>{
console.error(err)
})
}
insert({name: 'Gary Oblanka', age: 22});
お役に立てば幸いです。これを改善するための提案があれば、私が自分自身を改善したいと思っているので、私に知らせてください:)