@axway/api-builder-plugin-dc-mbs
Version:
Mobile Backend Services connector
45 lines (40 loc) • 1.17 kB
JavaScript
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
};