UNPKG

@axway/api-builder-plugin-dc-mbs

Version:

Mobile Backend Services connector

45 lines (39 loc) 1.17 kB
const { getTranslatedError, translateFields } = require('../utils'); const ignoreMissingFields = true; function save(Model, instance, next) { this.logger.trace('MBS.save', { instance, model: Model.name }); const pk = instance.getPrimaryKey(); const fields = instance.toPayload(); // reserved fields that cannot be used on update if (fields.created_at) { delete fields.created_at; } if (fields.updated_at) { delete fields.updated_at; } this.db.customObjectsUpdate({ classname: Model.name, id: pk, fields: translateFields(fields) }, (err, response) => { if (err) { // Do not expose `err` via callback (information disclosure) return next(getTranslatedError(this, err)); } const items = response.body.response[Model.name]; if (items.length !== 1) { const msg = `MBS expected 1 item but got ${items.length}`; this.logger.error(msg); return next(new Error(msg)); } const item = items[0]; this.logger.trace('MBS saved', item); const value = Model.instance(item, ignoreMissingFields); const pkName = Model.getPrimaryKeyName(); value.setPrimaryKey(item[pkName]); next(null, value); }); } module.exports = { save };