clarify your async js code without plenty of try{}catch(e){}
a lib for writing i/o codes and error handling which is like coding in golang
As node supports async/await feature, we can code with less calbacks, but the same time we get a lot of try catch
codes when error handling
so, I write this lib for wrapping the natural async i/o modules.
As there is a popular node_module called co, so i name this one all-co :)
this module is still being developed
use allco:
const mongodb = require('allco').mongodb;
async function test() {
var [err, db] = await mongodb.db('mongodb://localhost:27017/test');
if (err) throw err; // do your error handling here
let main = db.collection('main');
var [err, rep] = await main.insert({foo: 'bar'});
if (err) throw err;
return [err, rep];
}
test()
.then((result) => {
console.log(result);
})
.catch(e => console.log(e));
use native:
const mongo = require('mongodb').MongoClient;
async function test() {
// do your error handling with `try/catch`
try {
var db = await mongo.connect('mongodb://localhost:27017');
} catch(e) {
return console.log(e);
}
let main = db.collection('main');
// ...
}
test();
npm install allco
Note
If you care about memory usage of allco,you can require what you need dividually.
e.g. const mongodb = require('allco/mongodb');
fs
mongodb
import:
const mongodb = require('allco').mongodb;
// or
const mongodb = require('allco/mongodb');
connect:
// connect to db
var [err, db] = await mongodb.db('mongodb://localhost:27017/test');
if (err) return console.log(err);
// get a collection instance
let main = db.collection('main');
retrieve:
// find with query which equals find(query).toArray((err, data) => {...})
var [err, rep] = await main.find({});
if (err) return console.log(err);
// findOne method
var [err, rep] = await main.findOne({foo: 'fool'});
if (err) return console.log(err);
insert:
// insert a doc
var [err, rep] = await main.insert({foo: 'bar'});
if (err) return console.log(err);
update:
// update a doc
var [err, rep] = await main.update({foo: 'bar'}, {$set: {foo: 'fool'}}, {multi: true});
if (err) return console.log(err);
delete:
// remove a doc
var [err, rep] = await main.remove({foo: 'bar'});
if (err) return console.log(err);