Mysql
 sql >> база данни >  >> RDS >> Mysql

Не мога да върна обект в .then() Promise

Ако приемем, че използвате това node mysql пакет, можете да получите вмъкнатия идентификатор от резултат на израза за вмъкване.

Тъй като този пакет изглежда не е наясно със съществуването на обещания, можете да почистите праха от API с обвивка, която ще върне обещание:

//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 дървесни редове

  2. Как да персонализирате вашите MySQL и MariaDB архиви с ClusterControl

  3. Разлика между ключ, първичен ключ, уникален ключ и индекс в MySQL

  4. MySQL среден брой часове между създадените дати и времена за конкретен интервал от време

  5. Избор на квадратче за отметка на PHP/MySQL актуализиране към база данни