event-response
TypeScript icon, indicating that this package has built-in type declarations

0.4.4 • Public • Published

event-response

npm version Build Status Codacy Badge License: MIT

When you use Cloud Functions's Background Functions, have you ever wanted to record success / failure respond to the client side that it succeeded?

event-response is easy to understand like success status of HTTP and can record success / failure. It is also possible to handle it on the client side using the recorded status.

Install

yarn install event-response

Overview

OK

When Cloud Functions completes successfully, call setOK().

It is 200 in http.

new EventResponse.Result(user, 'prefix').setOK()

Bad Request

When Cloud Functions fails on client side problems such as invalid parameters, call setBadRequest(). And you can set id, error.

It is 400 in http.

new EventResponse.Result(user, 'prefix').setBadRequest('error_id', 'error reason')

Inernal Error

If an error occurs on the server side, call setInternalError. And you can set id, error.

It is 500 in http.

new EventResponse.Result(user, 'prefix').setInternalError('error_id', 'error reason')

Usage

This sample is written in TypeScript.

1. Initialize

Initialize event-response in your index.ts.

import * as EventResponse from 'event-response'
import * as functions from 'firebase-functions'
 
EventResponse.initialize(functions.config().firebase)

2. Call set method

You can set 3 pattens.

  • OK
  • BadRequest
  • InternalError
exports.updateUser = functions.firestore.document('users/{userId}')
  .onCreate(async event => {
    if (!event.data.data().name) {
      return new EventResponse.Result(event.data.ref, 'updateUser').setBadRequest('NameNotFound', 'User.name not found')
    }
 
    try {
      await event.data.ref.update({name: 'new name'})
      await new EventResponse.Result(event.data.ref, 'updateUser').setOK()
    } catch (error) {
      await new EventResponse.Result(event.data.ref, 'updateUser').setInternalError('NameUpdateFailed', error.toString())
      return Promise.reject(error)
    }
 
    return undefined
})

The result can be got as follows.

admin.firestore().doc('user/1000').get().then(s => {
  const user = s.data())
  const status = user.updateUserResult.status
  const id = user.updateUserResult.id
  const error = user.updateUserResult.error
}

Advanced

Failure

TODO

Package Sidebar

Install

npm i event-response

Weekly Downloads

2

Version

0.4.4

License

MIT

Unpacked Size

603 kB

Total Files

15

Last publish

Collaborators

  • star__hoshi