node.jsの非同期および条件付きループ内でネストされたクエリを実行する方法

アニケットラバ

プロジェクトにnode.js、express、postgresdbを使用しています。シーケンスで実行できない非同期関数のクエリがほとんどありません。参考のためのサンプルコード。

for(let i=0;i<person_size;i++)
{
    var check_person_query="select per_id_pk from person_tbl where per_fname='"+person_fname[i]+"' and per_lname='"+person_lname[i]+"'";

    dbClient.query(check_person_query,function(err,result){
        if(result.rows.length>0)
        {
            console.log("Call: 1.1");
            console.log("person already exists");
        }
        else
        {
            var insert_person_query = "insert into person_tbl (per_fname,per_lname,per_gender,profile_photo) values('"+person_fname[i]+"','"+person_lname[i]+"','"+person_gender[i]+"','profile_photo_link')";
            //console.log("query2: "+insert_person_query);
            dbClient.query(insert_person_query,function(err,result){
                    if (err) throw err;
                    console.log("Call: 1.2");
                    console.log("New person has been added");       
            });

            var fullname = person_fname[i].concat(person_lname[i]);
            low_fullname = fullname.toLowerCase();

            person_pic[i].mv("/home/aniket/content_info/images/"+low_fullname+".jpg", function(err){
                if (err) throw err;
            });                                             
        }
    });
}//end for 

上記のコードでは、条件が失敗した場合、else部分がasync.series関数の最後で実行されます。条件が成功する限り、すべてが順番に完全に機能します。ネストされたデータベースクエリを順番に実行する方法は?async.waterfallを使用しましたが、それでも期待される出力はありません。

更新:(解決済み)

ネストされたクエリ関数を使用する代わりに、ネストを削除し、期待される結果を取得して実行シーケンスを維持できるように、単一のクエリを準備しました。

vkarpov15

あなたは本当にasync / awaitを使うべきです。サポートの約束のlib PG、あなただけのこの操作を行うことができますので。

for(let i=0;i<person_size;i++) {
  const result = await dbClient.query(check_person_query);
  if(result.rows.length <= 0) {
    await dbClient.query(insert_person_query);
  }
}

async / awaitでforループを使用する方法について詳しく説明します

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

node.jsで非同期リクエストのループが終了するのを待つ方法は?

分類Dev

node.jsで複数のRESTAPIリクエストを非同期に実行するにはどうすればよいですか?

分類Dev

Node.js:非同期モジュールでエンドレスループを実行する方法

分類Dev

node.jsスクリプト内でwineを介して実行するために呼び出されたプログラムがフリーズする

分類Dev

Node.js:forループの各反復内で非同期のネストされたコールバックが機能しない

分類Dev

Node.jsで非同期javascriptはどのように解釈および実行されますか?

分類Dev

どちらの方法がより便利です各実行の間にスリープを伴うエンドレスループで非同期関数を実行します(Node.js / Vanilla JS)

分類Dev

node.js、express-同期的にループ内でmysqlクエリを次々に実行する

分類Dev

node.jsのデータベースを非同期でクエリする

分類Dev

child_process.spawn()によってローカルにインストールされたNode.jsアプリケーションを実行する方法は?

分類Dev

Node.jsの非同期axiosリクエストからデータを取得する方法

分類Dev

モジュールではなく、呼び出されるとすぐに実行されるNode.JSスクリプトをテストするにはどうすればよいですか?

分類Dev

Node / Express-DELETEおよびPUTリクエストを実装する方法

分類Dev

node.jsでリクエストを同期させる方法は?

分類Dev

非同期Node.jsスクリプトの最後のものとして関数を実行します

分類Dev

AWS Lambda Node.js は、非同期 HTTP リクエストの完了後に this.emit を実行します

分類Dev

ページ数がわからない場合に、Node.jsを使用してwhileループでAPIに複数のページ付けされたGETリクエストを作成するにはどうすればよいですか?

分類Dev

node.jsは、コールバック内にアクセスするために、非同期操作の外部で変数をどのように保存しますか?

分類Dev

Node.jsで非同期関数の長いネストを回避する方法

分類Dev

Node.js:非同期関数はforループ内でPromiseの解決を待たないようです

分類Dev

Node JSでrender()の前にクエリが実行されたことを確認する方法

分類Dev

node.jsの名前空間に実装されたクラスをエクスポートする方法

分類Dev

node.js / express app-HGETへのネストされた呼び出しを置き換えるために使用する非同期メソッドはどれですか?

分類Dev

Node.jsサーバーでPOSTリクエストのループを実行します

分類Dev

コールバックを実装しようとしています。または、getリクエストが完了するまで待つ方法です。これはnode.jsエクスプレスにあります

分類Dev

厳密モードで vm を使用して node.js スクリプトを実行すると、エクスポートが定義されません

分類Dev

PM2およびファイルのアクセス許可で実行されているNode JSプロセス

分類Dev

APDU を使用した Node.js 非同期リクエスト

分類Dev

2つのforループ内のnode.js同期リクエスト

Related 関連記事

  1. 1

    node.jsで非同期リクエストのループが終了するのを待つ方法は?

  2. 2

    node.jsで複数のRESTAPIリクエストを非同期に実行するにはどうすればよいですか?

  3. 3

    Node.js:非同期モジュールでエンドレスループを実行する方法

  4. 4

    node.jsスクリプト内でwineを介して実行するために呼び出されたプログラムがフリーズする

  5. 5

    Node.js:forループの各反復内で非同期のネストされたコールバックが機能しない

  6. 6

    Node.jsで非同期javascriptはどのように解釈および実行されますか?

  7. 7

    どちらの方法がより便利です各実行の間にスリープを伴うエンドレスループで非同期関数を実行します(Node.js / Vanilla JS)

  8. 8

    node.js、express-同期的にループ内でmysqlクエリを次々に実行する

  9. 9

    node.jsのデータベースを非同期でクエリする

  10. 10

    child_process.spawn()によってローカルにインストールされたNode.jsアプリケーションを実行する方法は?

  11. 11

    Node.jsの非同期axiosリクエストからデータを取得する方法

  12. 12

    モジュールではなく、呼び出されるとすぐに実行されるNode.JSスクリプトをテストするにはどうすればよいですか?

  13. 13

    Node / Express-DELETEおよびPUTリクエストを実装する方法

  14. 14

    node.jsでリクエストを同期させる方法は?

  15. 15

    非同期Node.jsスクリプトの最後のものとして関数を実行します

  16. 16

    AWS Lambda Node.js は、非同期 HTTP リクエストの完了後に this.emit を実行します

  17. 17

    ページ数がわからない場合に、Node.jsを使用してwhileループでAPIに複数のページ付けされたGETリクエストを作成するにはどうすればよいですか?

  18. 18

    node.jsは、コールバック内にアクセスするために、非同期操作の外部で変数をどのように保存しますか?

  19. 19

    Node.jsで非同期関数の長いネストを回避する方法

  20. 20

    Node.js:非同期関数はforループ内でPromiseの解決を待たないようです

  21. 21

    Node JSでrender()の前にクエリが実行されたことを確認する方法

  22. 22

    node.jsの名前空間に実装されたクラスをエクスポートする方法

  23. 23

    node.js / express app-HGETへのネストされた呼び出しを置き換えるために使用する非同期メソッドはどれですか?

  24. 24

    Node.jsサーバーでPOSTリクエストのループを実行します

  25. 25

    コールバックを実装しようとしています。または、getリクエストが完了するまで待つ方法です。これはnode.jsエクスプレスにあります

  26. 26

    厳密モードで vm を使用して node.js スクリプトを実行すると、エクスポートが定義されません

  27. 27

    PM2およびファイルのアクセス許可で実行されているNode JSプロセス

  28. 28

    APDU を使用した Node.js 非同期リクエスト

  29. 29

    2つのforループ内のnode.js同期リクエスト

ホットタグ

アーカイブ