Forudsat at du bruger dette node mysql-pakke, du kan få det indsatte id fra resultat af indsætningserklæringen.
Da den pakke ikke ser ud til at være klar over eksistensen af løfter, kan du støve api'en af med en indpakning, der returnerer et løfte:
//turn an insert query with callback function
// into a function returning a promise
const insertAsPromise = connection => args =>
new Promise(
(resolve,reject)=>
//call connection query with variable amount of argument(s)
// using Function.prototype.apply
connection.query.apply(connection,args.concat(
//add the callback to the list of arguments, callback
// is the last argument
(error, results, fields) =>
(error)
? reject(error)
: resolve([results,fields])
))
);
const sqlEdit = "INSERT INTO images_det SET ?";
Promise.all(
object.det_img.map(
image=>//map magical/global object.det_img to promise
insertAsPromise(connection)([sqlEdit,image.name_img])
.then(//when promise resolves get the inserted id
([results,fields])=>
results.insertId
)
)
)
.then(
results=>console.log(results)//should log an array of id's
)
.catch(
err=>console.error("something went wrong:",err)
)