Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Nie mogę zwrócić obiektu w .then() Promise

Zakładając, że używasz tego pakiet node mysql można uzyskać wstawiony identyfikator z wynik instrukcji wstawiania.

Ponieważ ten pakiet nie wydaje się być świadomy istnienia obietnic, możesz odkurzyć interfejs API za pomocą opakowania, które zwróci obietnicę:

//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. Dodatek SqlAlchemy TIMESTAMP „przy aktualizacji”

  2. Rozmiar do przechowywania adresów IPv4, IPv6 jako ciągu

  3. Utwórz wielowymiarową tablicę z tabeli bazy danych

  4. Zaktualizuj tabelę za pomocą SUM z innej tabeli

  5. Błąd MYSQL:Kod błędu:2006 - Serwer MySQL zniknął