sql >> データベース >  >> RDS >> Mysql

.then()Promiseでオブジェクトを返すことができません

    これ を使用すると仮定します ノードmysqlパッケージは、から挿入されたIDを取得できます。結果 挿入ステートメントの。

    そのパッケージはpromiseの存在を認識していないように見えるため、promiseを返すラッパーを使用して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. Slickのソースコードジェネレーターでユーザー名とパスワードを設定するにはどうすればよいですか?

    2. 初めて見る人のためのMSSQLServerの分析

    3. SQLクライアントを介してテーブルに挿入されたレコードがjdbcプログラムで使用されたときに表示されない

    4. SQLiteデータベースを復元する