Rumah  >  Soal Jawab  >  teks badan

Cara menghantar parameter kepada fungsi panggil balik pertanyaan MySQL dalam Node.js

<p>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. </p> <p>Saya mempunyai sambungan panggilan.query(sql, function(err, result) {...});</p> <p>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? </p> <p>Saya mempunyai pseudokod berikut: </p> <pre class="brush:php;toolbar:false;">... 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; }; }</pre> <p>Daripada kod di atas, saya perlu dapat menghantar nilai semasa "ix" yang digunakan dalam pertanyaan kepada panggilan balik itu sendiri. </p> <p>Bagaimana saya boleh melakukannya? </p>
P粉078945182P粉078945182424 hari yang lalu614

membalas semua(2)saya akan balas

  • P粉212971745

    P粉2129717452023-08-23 13:55:53

    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)

    balas
    0
  • P粉476046165

    P粉4760461652023-08-23 11:39:22

    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

    balas
    0
  • Batalbalas