Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Tôi không thể trả về một đối tượng trong .then () Promise

Giả sử bạn sử dụng cái này gói mysql nút mà bạn có thể lấy id được chèn từ kết quả của câu lệnh chèn.

Vì gói đó dường như không nhận thức được sự tồn tại của các lời hứa, bạn có thể phủi api bằng một trình bao bọc sẽ trả về một lời hứa:

//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. SQL chọn thành viên thứ n của nhóm

  2. MySQL - SUM của một nhóm chênh lệch thời gian

  3. Làm cách nào để đặt character_set_database và collation_database thành utf8 trong my.ini?

  4. Xóa các hàng khỏi bảng, ngoại trừ số được chỉ định (giới hạn số hàng)

  5. Sự khác biệt giữa mysqli và mysql?