DEV Community

Imed Jaberi
Imed Jaberi

Posted on

Koa BodyParser with Firebase Cloud Functions ✔️

Many Koa.js users encounter some problems with Firebase Functions during parse bodies using koa-bodyparser.

So, I'd like to share how to solve this problem and help who haven't come across this yet 🧙🏻‍♂️❤️.

Before starting there are some terms that should be clarified for newcomers.

  • Koa.js is a very minimal and elegant Node.js web framework developed by the team behind Express.js.
  • Firebase Functions is a serverless framework that lets you automatically run backend code in response to events triggered by Firebase features and HTTPS requests.
  • koa-bodyparser A body parser for Koa, based on co-body. support json, form and text type body.

Note: The current version of koa-bodyparser is 4.3.0

You should know that Firebase actually parses the body. (see more here 👀)
Therefore the module getting confused deals with ctx.request.body and ctx.req.body and an error appears here.

The quick solution is to use ctx.req.body because it's already parsed. 😅

Also, you can create a small middleware function to support already parsed bodies. (ref to this code 📌)

// Import koa-bodyparser module
const bodyParser = require('koa-bodyparser');

// Middleware for Koa@2.x.x
function hybridBodyParser (opts) {
  const bp = bodyParser(opts);
  return async function (ctx, next) {
    ctx.request.body = ctx.request.body || ctx.req.body;
    return bp(ctx, next);
  }
}

// Usage 
app.use(hybridBodyParser());
Enter fullscreen mode Exit fullscreen mode

I'd love to hear about other solutions ? ✨
Feel free to share it with us 👋

Top comments (0)