Home

Awesome

feathers-json-patch

Add JSON Patch support to any Feathers database adapter or service.

$ npm install --save feathers-json-patch

Usage

Feathers server

An example using the feathers-memory adapter.

const memoryService = require('feathers-memory');
const withJsonPatch = require('feathers-json-patch');

const service = withJsonPatch(memoryService);

app.use('/messages', service());

Another example, using service constructor:

const MemoryService = require('feathers-memory').Service;
const withJsonPatch = require('feathers-json-patch');

const MyService = withJsonPatch(memoryService);

app.use('/messages', new MyService());

Feathers client

import feathers from '@feathersjs/client';
import { compare } from 'fast-json-patch';

const client = feathers().configure(...);

const id = 1;

const message = await client.service('/messages').get(id);

const newValues = {
  ...message,
  text: 'My updated message!',
  tags: ['info']
};

// Generate a JSON patch object
const diff = compare(message, newValues);

// Optional check, but no need to send
// a patch request if the diff has length == 0
if (diff.length) {
  client.service('/messages').patch(id, diff);
}

HTTP

PATCH /messages/1 HTTP/1.1
Accept: application/json

[
    {
        "op": "replace",
        "path": "/text",
        "value": "My updated message!"
    },
    {
        "op": "add",
        "path": "/tags",
        "value": ["info"]
    }
]



HTTP/1.1 200 OK
Content-Type: application/json

{
    "id": 1,
    "text": "My updated message!",
    "tags": ["info"]
}