UNPKG

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

Version:

Mobile Backend Services connector

45 lines (40 loc) 1.17 kB
const { translateFields, getTranslatedError } = require('../utils'); const ignoreMissingFields = true; function create(Model, fields, next) { this.logger.trace('MBS.create', { fields, model: Model.name }); const pkName = Model.getPrimaryKeyName(); // reserved fields that cannot be used on create if (fields[pkName]) { // if `id` is passed in, ignore it delete fields[pkName]; } if (fields.created_at) { delete fields.created_at; } if (fields.updated_at) { delete fields.updated_at; } this.db.customObjectsCreate({ classname: Model.name, 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('created', item); const value = Model.instance(item, ignoreMissingFields); value.setPrimaryKey(item[pkName]); next(null, value); }); } module.exports = { create };