event-response
v0.4.4
Published
Handle the results of Cloud Functions like http status code.
Downloads
15
Maintainers
Readme
event-response
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