sql >> Database >  >> RDS >> Mysql

Ik kan een object niet retourneren in .then() Promise

Ervan uitgaande dat u dit gebruikt node mysql-pakket kunt u de ingevoegde id ophalen van de resultaat van de insert-instructie.

Aangezien dat pakket zich niet bewust lijkt te zijn van het bestaan ​​van beloften, kun je de api afstoffen met een wikkel die een belofte teruggeeft:

//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. Gegevens afgekapt voor kolom 'xxxx' in rij 1

  2. CakePHP converteert MySQL integers naar strings... functie rand() verknoeien

  3. Proberen variabelen op te slaan in een MYSQL-databasetabel met behulp van afbeeldingen

  4. DataTables met PHP met MySQL:Hoe de mysql-query wijzigen?