node.js - Hows should I structure middleware to verify an ID exists in an external service in a Node/Express app? -


i've written middleware verify id exists in external services (salesforce). wrote when single use app, i'm trying make work different routes, want generic.

i don't know if middleware right way go, or if should call function before saving specific form.

i've got form puts in information project, , salesforce id. background, salesforce id auto-increment number, , need convert actual salesforce system id before use jsforce create new object linked id.

my route looks this:

router.post('/invoice/add', ensureloggedin, invoicecontroller.validateinvoice, catcherrors(sfdc.validatesfid), catcherrors(invoicecontroller.saveinvoice)) 

so, i've got middleware this:

exports.validatesfid = async(req, res, next) => {    const salesforceprojectnumber = req.body.sf_opportunity   const sfresult = await conn.search(`find ... long query`, (err, result) => {     if (err || result.searchrecords.length !== 1) {       req.flash('error', 'unable find salesforce job id number.')       console.error(`error: ${req.user.displayname} errored when looking job number ${salesforceprojectnumber}.`)       return result     }   })   if (sfresult.searchrecords.length > 0) {     req.body.salesforce_opportunity_id = sfresult.searchrecords[0].id //create generic variable hold salesforce opportunity works regardless of custom object name     res.locals.opportunity_clean_name = sfresult.searchrecords[0].name   }   next() } 

the query throws error, in case, error returning !1 records.

when happens, want flash message on screen saying id wasn't found, keep form filled in.

when id found, want proceed save , not display form fields anymore.

this middleware needs work regardless of form i'm using, want able pipe in middleware form might require user enter salesforce job field.

any thoughts on how best handle all?

you can use middleware using app.use() function

app.use((req, res, next) => {   // every time request has made, middleware fire   console.log('howdy'); }) 

Comments

Popular posts from this blog

What is happening when Matlab is starting a "parallel pool"? -

angular - DownloadURL return null in below code -

php - Cannot override Laravel Spark authentication with own implementation -