Cara menghantar parameter kepada fungsi panggil balik pertanyaan MySQL dalam Node.js
Jennifer Aniston
Jennifer Aniston 2023-08-22 15:44:32
0
2
576

Saya cuba memikirkan cara yang betul untuk menghantar data tersuai kepada panggilan pertanyaan supaya ia tersedia dalam panggilan balik. Saya menggunakan perpustakaan MySQL (semua versi terkini) dalam nodejs.

Saya mempunyai sambungan panggilan.query(sql, function(err, result) {...});

Saya tidak dapat mencari jalan untuk 1) menghantar data/parameter tersuai kepada panggilan supaya ia tersedia apabila panggilan balik dipanggil. Jadi, apakah perkara yang betul untuk dilakukan?

Saya mempunyai pseudokod berikut:

... untuk (ix dalam SomeJSONArray) { sql = "PILIH (1) DARI someTable WHERE someColumn = " + SomeJSONArray[ix].id; connection.query(sql, function (err, result) { ... var y = SomeJSONArray[ix].id; }; }

Daripada kod di atas, saya perlu dapat menghantar nilai semasa "ix" yang digunakan dalam pertanyaan kepada panggilan balik itu sendiri.

Bagaimana saya boleh melakukannya?

Jennifer Aniston
Jennifer Aniston

membalas semua (2)
P粉212971745

Untuk menjawab soalan awal dan memberi contoh, bungkus fungsi panggil balik dalam fungsi tanpa nama yang serta-merta mencipta skop "gambar" yang mengandungi data masuk.

var ix=1; connection.query('SELECT 1', (function(ix){ return function(err, rows, fields) { console.log("ix="+ix); console.log(rows); }; })(ix));

Bagi mereka seperti saya yang baru belajar konsep ini, yang terakhir })(ix)); ialah nilai var luar ix=1 yang dihantar ke (fungsi(ix){. Jika anda konsol. log("ix ="+abc); ditukar kepada console.log("ix="+abc);, kemudian ia boleh dinamakan semula kepada (function(abc){.

fwiw (Terima kasih kepada Chris atas pautan itu, mengisi kekosongan untuk mendapatkan penyelesaian)

    P粉476046165

    Jika anda menggunakan node-mysql, sila ikut arahan dalam dokumentasi:

    connection.query( 'SELECT * FROM table WHERE id=? LIMIT ?, 5',[ user_id, start ], function (err, results) { } );

    Kod untuk melepaskan rentetan dengan betul juga disediakan dalam dokumentasi, tetapi menggunakan tatasusunan dalam panggilan pertanyaan akan melepaskannya secara automatik untuk anda.

    https://github.com/felixge/node-mysql

      Muat turun terkini
      Lagi>
      kesan web
      Kod sumber laman web
      Bahan laman web
      Templat hujung hadapan
      Tentang kita Penafian Sitemap
      Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!