sql >> Database teknologi >  >> RDS >> Mysql

Jeg kan ikke returnere et objekt i .then() Promise

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)
)



  1. #1025 - Fejl ved omdøbning (fejlnr.:150) i mysql

  2. Oracle SQL:tidsstempler i where-sætning

  3. Få resultater fra oracles lagrede procedure

  4. Aggreger funktion over et givet tidsinterval