Skip to content

Latest commit

 

History

History
 
 

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 
 
 
 
 
 
 

NodeJS Echo Example on Zeit

If you haven't already, follow the first part of instructions here.

This is an example which echoes the event back, written in NodeJS.

Create a table

Visit the GraphQL Engine URL to open console.

Goto Data tab.

Create the following table:

Table name: note

Columns:

id     Integer auto-increment
note   Text

Primary key: id

Deploy the function

Execute now in this directory:

now

Once the deployment is done, you'll get an endpoint like https://zeit-echo-hhasdewasd.now.sh. Note this down as NOW_URL.

Note: Now.sh deployments are immutable, i.e. each time you deploy the code, a new URL will be provisioned. You can alias the deployment to keep a constant URL.

Create the trigger

Goto Hasura console, Events tab and create a new trigger:

Trigger name: note_trigger

Schema/Table: public/note

Operations: Insert, Update, Delete

Webhook URL: NOW_URL

Replace NOW_URL with the URL noted earlier.

Test the trigger

Goto Data tab on Hasura console, browse to note table and insert a new row. Once a new row is inserted, goto Events table and note_trigger. Checkout the request and response body for the processed events.

Trigger payload (request):

{
    "event": {
        "op": "INSERT",
        "data": {
            "old": null,
            "new": {
                "text": "new-entry",
                "id": 1
            }
        }
    },
    "created_at": "2018-10-01T17:21:03.76895Z",
    "id": "b30cc7e6-9f3b-48ee-9a10-16cce333df40",
    "trigger": {
        "name": "note_trigger",
        "id": "551bd6a9-6f8b-4644-ba7f-80c08eb9227b"
    },
    "table": {
        "schema": "public",
        "name": "note"
    }
}

Webhook response:

{
    "message": "received 'b30cc7e6-9f3b-48ee-9a10-16cce333df40' for 'INSERT' operation on 'note' table in 'public' schema from 'note_trigger' trigger",
    "oldData": null,
    "newData": {
        "text": "new-entry",
        "id": 1
    }
}