Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Node Mysql async beberapa kueri

Jadi, Anda harus menunggu semua panggilan balik kembali sebelum Anda mengirim respons. Jika kita mengabaikan penanganan kesalahan dan mengosongkan hasil untuk kesederhanaan, ini dapat dilakukan seperti:

var callback = function(blogs) {
    res.send(blogs);
}

connection.query("SELECT * FROM blogs ORDER BY time DESC", function(err, blogs, fields) {
    var pending = blogs.length;

   for (blog in blogs) {

        connection.query("SELECT * FROM tags WHERE blog_id='blog.id' ", function(err, tags, fields) {
        blog.tags = tags;

        if (0 === --pending) {
            callback(blogs);
        }
     });
   }
});

Dengan janji, lihat fungsi Promise.all yang mengembalikan janji baru. Janji ini diselesaikan ketika semua janji yang diteruskan ke dalam array diselesaikan. Dengan pustaka Q seharusnya seperti ini:

var getTags = function(blog) {
    var deferred = Q.defer();
    connection.query("SELECT * FROM tags WHERE blog_id='blog.id' ", function(err, tags, fields) {
        blog.tags = tags;
        deferred.resolve();
    });
    return deferred.promise;
}

var promises = blogs.map(getTags(blog));

Q.all(promises).then(res.send(blogs));


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. mysql konversi waktu 12 jam ke 24 jam

  2. MySQL - NULL aman BUKAN operator yang sama

  3. Menggunakan Suka Di MySQL untuk Operasi Pencarian Menggunakan Pola

  4. Bagaimana cara mendapatkan semua nilai dalam kolom menggunakan PHP?

  5. Bagaimana cara mengatur ulang kata berhenti di MYSQL?