sql >> Databasteknik >  >> RDS >> Mysql

Jag kan inte returnera ett objekt i .then() Promise

Förutsatt att du använder denna node mysql-paketet kan du få det infogade id:t från resultat av infogningssatsen.

Eftersom det paketet inte verkar vara medvetet om förekomsten av löften kan du damma av api:n med ett omslag som kommer att returnera ett 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. Hur räknar man ord i MySQL / regular expression replacer?

  2. Ansluter C# till Oracle

  3. Heroku - dumpa och ladda en tabell till delad postgres-databas

  4. Var infogar jag ORDER BY i min MYSQL-fråga