json-linker

1.5.0 • Public • Published

json-linker

Provides linking compatible with jsonapi.

Usage Example

Linking for json serialization

// currently works only with singular models
var song = {
  title: 'Sunshine of Your Love'
  riffs: [
    { id: 'abc123', start: '1:04', stop: '1:20' },
    { id: 'qwe234', start: '2:34', stop: '2:59' }
  ],
  tags: [
    { id: 'w00t', name: 'creamy' },
    { id: '4r33l', name: 'awesome' }
  ]
}
 
var JsonLinker = require('json-linker')
 
var json = new JsonLinker(song, 'songs')
  .links('riffs', 'tags')
  .toJson()
 
// outputs =>
//
// {
//   songs: [{
//     title: 'Sunshine of Your Love',
//     links: {
//       riffs: ['abc123', 'qwe234'],
//       tags: ['w00t', '4r33l']
//     }
//   }],
//   linked: {
//     riffs: [
//       { id: 'abc123', start: '1:04', stop: '1:20' },
//       { id: 'qwe234', start: '2:34', stop: '2:59' }
//     ],
//     tags: [
//       { id: 'w00t', name: 'creamy' },
//       { id: '4r33l', name: 'awesome' }
//     ]
//   }
// }

Unlinking for embedded models

// currently works only with singular models
var json = {
  songs: [{
    title: 'Sunshine of Your Love',
    links: {
      riffs: ['abc123', 'qwe234'],
      tags: ['w00t', '4r33l']
    }
  }],
  linked: {
    riffs: [
      { id: 'abc123', start: '1:04', stop: '1:20' },
      { id: 'qwe234', start: '2:34', stop: '2:59' }
    ],
    tags: [
      { id: 'w00t', name: 'creamy' },
      { id: '4r33l', name: 'awesome' }
    ]
  }
}
 
var JsonLinker = require('json-linker')
 
var model = new JsonLinker(song)
  .toEmbeddedModel()
  
// outputs =>
// var song = {
//   title: 'Sunshine of Your Love'
//   riffs: [
//     { id: 'abc123', start: '1:04', stop: '1:20' },
//     { id: 'qwe234', start: '2:34', stop: '2:59' }
//   ],
//   tags: [
//     { id: 'w00t', name: 'creamy' },
//     { id: '4r33l', name: 'awesome' }
//   ]
// }
 

Package Sidebar

Install

npm i json-linker

Weekly Downloads

93

Version

1.5.0

License

MIT

Last publish

Collaborators

  • jaketrent