Evozonjs Elements is a suite of basic building blocks used in the JavaScript department of Evozon.
npm install git://github.com/evozonjs/elements.git --save
elements/response proposes a standard format for json messages. We use the following attributes:
| Name | Type | Required | Default | Description |
|---|---|---|---|---|
uid |
string |
NO | auto | a unique timebased message identifier (based on node-uuid v1) |
ok |
boolean |
YES | status of the message | |
code |
number |
NO | 0 |
a numeric code |
data |
`array | object` | NO | {} |
metadata |
object |
NO | {} |
secondary data container |
err |
string |
NO | '' |
will contain an error message in case of an error |
msg |
string |
NO | '' |
an extra message |
The constructor accepts the following instantiation scenarios:
// load an element
const response = require('elements/response');
// 1 object parameter holding some or all the attributes.
// remember that 'ok' attribute is required
console.log(new response({ ok: false, err: 'some error'}));
/**
-- will return --
{ uid: '76a16e00-f5dc-11e6-af8e-cf6322a4a5f7',
ok: true,
code: 0,
data: {},
metadata: {},
err: '',
msg: '' }
*/
// or 1 boolean parameter considered as being the 'ok' attribute
console.log(response(true));
/**
-- will return --
{ uid: '76a16e00-f5dc-11e6-af8e-cf6322a4a5f7',
ok: true,
code: 0,
data: {},
metadata: {},
err: '',
msg: '' }
*/
// or 2 parameters considered as being the 'ok' attribute and the 'data' attribute
console.log(new response(true, [1,2,3]));
/**
-- will return --
{ uid: 'f66328d0-f5dd-11e6-9ba8-61642a559e2e',
ok: true,
code: 0,
data: [ 1, 2, 3 ],
metadata: { count: 3 },
err: '',
msg: '' }
*/
// or 3 parameters considered as being the 'ok' attribute, the 'data' attribute, and the 'metadata' attribute
console.log(response(true, [1,2,3], { extra: 'some data' }));
/**
-- will return --
{ uid: 'd6f81960-f5dd-11e6-94ca-35a81f2588d0',
ok: true,
code: 0,
data: [ 1, 2, 3 ],
metadata: { extra: 'some data', count: 3 },
err: '',
msg: '' }
*/As a bonus, if the data attribute is an array, and if metadata.count is not defined by the user the constructor will
automatically put the array length into metadata.count.
If the format of an attribute is not accepted and error will be thrown.
MIT