Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Saya tidak dapat mengembalikan objek di .then() Promise

Dengan asumsi Anda menggunakan ini node mysql paket Anda bisa mendapatkan id yang dimasukkan dari hasil dari pernyataan sisipan.

Karena paket itu tampaknya tidak menyadari keberadaan janji, Anda dapat membersihkan api dengan pembungkus yang akan mengembalikan janji:

//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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. ORDER BY Subquery untuk konversi GROUP BY ke JOIN

  2. Strategi untuk memetakan banyak arsip dalam satu tabel ke satu bidang di tabel lain

  3. Sintaks metode LINQ untuk beberapa gabungan kiri

  4. Umlaut Jerman di MYSQL INSERT

  5. Jalankan kueri SQL pada startup layanan MySQL