wga is a small JS function which can wrap a generator or async function to used as request handlers or middleware in Express. wga brought modern async write style to Express
npm install wga --savevar wga = require("wga")
var app = require("express")()
app.get("/books", wga(function*(req, res, next) {
var books = yield Book.findAll()
res.send(books)
}))If any error been throwed out, they will be passed to next, which in
Express's case calls the error handling middleware later on.
If the generator succeeds, the next callback will not be called.
If you need to, like in middleware handlers, you can always call next yourself:
app.use(wga(function*(req, res, next) {
var user = yield User.find(req.session.userId)
if (user == null) return next(new Error("Unauthorized"))
req.user = user
next()
}))app.use(wga(async function(req, res, next) {
var user = await User.find(req.session.userId)
if (user == null) return next(new Error("Unauthorized"))
req.user = user
next()
}))
app.get('/', wga(async function (req, res) {
let result = await Promise.resolve('Hello world')
res.send(`${result}\n`)
}))MIT