V8 field validation
From DreamFactory
Toddappleton (Talk | contribs) |
|||
(6 intermediate revisions by 2 users not shown) | |||
Line 1: | Line 1: | ||
− | This script validates that certain fields are in the POST request when creating records. If not, an exception is thrown and 500 error returned to the client. lodash.min.js is available by default. The file is located in storage/scripting directory of the DreamFactory installation. You can add your own scripts there and use require() to include them. | + | This script validates that certain fields are in the POST request when creating records. If not, an exception is thrown and 500 error returned to the client. If the script exits normally with no exception being thrown, then the records will be written to the database and the post-process script, if any, will be run. lodash.min.js is available by default. The file is located in storage/scripting directory of the DreamFactory installation. You can add your own scripts there and use require() to include them. |
<source lang="javascript"> | <source lang="javascript"> | ||
Line 19: | Line 19: | ||
} | } | ||
}); | }); | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
} | } | ||
</source> | </source> |
Latest revision as of 21:54, 15 July 2016
This script validates that certain fields are in the POST request when creating records. If not, an exception is thrown and 500 error returned to the client. If the script exits normally with no exception being thrown, then the records will be written to the database and the post-process script, if any, will be run. lodash.min.js is available by default. The file is located in storage/scripting directory of the DreamFactory installation. You can add your own scripts there and use require() to include them.
// POST /api/v2/db/_table/account triggers script db._table.account.post.pre_process // This script runs BEFORE records are written to the db. // records are in array event.request.payload.resource. var lodash = require("lodash.min.js"); if (event.request.payload.resource) { lodash._.each(event.request.payload.resource, function( record ) { if (!record.hasOwnProperty("annual_revenue")) { throw 'missing field annual_revenue'; } if (record.annual_revenue <= 0) { throw 'annual_revenue must be > 0'; } }); }