Daftar dan Belajar Sekarang!

NodeJS + Mysql return data and getting ??

foto Saputroandhi
509 Kontribusi 161 Coto
2 tahun yang lalu
selamat sore, mau nanya gan saya baru belajar NodeJs dengan DB mysql. sebelumya Crud sudah berhasil tapi saya jadikan satu proses querynya di dalam file yang sama, nah saya coba buat fungsi querynya terpisah, tapi ternya Js ga bisa begitu aja nge return Data yang di hasilin dari query dari fungsinya . data berhasil di cosole.log() di dalam fungsi nya , tapi begitu di return dan di tangkep di file utamanya hasilnya malah undifined ? berikut script nya yang undifined : Hasil -->
C:\Users\saputroandhi\node\datanode>node server
connected
undefined
File Utama -->
app.get('/',function(req,resp){
    var lib = require('./models/blog');
    console.log(lib.content());
});
file fungsinya ---->
module.exports = {
  content: function(){
    connection.query("SELECT * FROM blog;",function(error,results,fields){
      if(!!error){
        console.log('kaga konek');
      }else{
        return results;
      }
    });
  }
}
TAPI !!! kalo saya langsung console.log(results) nya di dalam fungsi yang saya buat data berhasil keluar ini hasilnya
C:\Users\saputroandhi\node\datanode>node server
connected
undefined
[ RowDataPacket {
    blog_id: 1,
    blog_title: 'Belajar Node JS',
    blog_sub_title: 'Belajar Node Js Untuk Pemula',
    blog_slug: 'belajar-node-js-untuk-pemula',
    blog_image: 'https://camo.githubusercontent.com/b6ba9075a54c192efc59bba53c92e7c23ec8cfe8/68747470733a2f2f63646e2e7261776769742e636f6d2f67696c626172626172612f6c6f676f732f653762316463323636366333646162653663313237366162643061373637623665626436616634332f6c6f676f732f6e6f64656a732d69636f6e2e737667',
    blog_text: 'Ini adalah blog pertama saya dengan node Js Ini adalah blog pertama saya dengan node Js Ini adalah blog pertama saya dengan node Js Ini adalah blog pertama saya dengan node Js Ini adalah blog pertama saya dengan node Js ',
    blog_deleted: '0000-00-00 00:00:00' },
  RowDataPacket {
    blog_id: 2,
    blog_title: 'Belajar Node JS',
    blog_sub_title: 'Belajar Node Js Untuk Pemula',
    blog_slug: 'belajar-node-js-untuk-pemula',
    blog_image: 'https://camo.githubusercontent.com/b6ba9075a54c192efc59bba53c92e7c23ec8cfe8/68747470733a2f2f63646e2e7261776769742e636f6d2f67696c626172626172612f6c6f676f732f653762316463323636366333646162653663313237366162643061373637623665626436616634332f6c6f676f732f6e6f64656a732d69636f6e2e737667',
    blog_text: 'Ini adalah blog pertama saya dengan node Js Ini adalah blog pertama saya dengan node Js Ini adalah blog pertama saya dengan node Js Ini adalah blog pertama saya dengan node Js Ini adalah blog pertama saya dengan node Js ',
    blog_deleted: '0000-00-00 00:00:00' } ]
ini yang saya ubah di fungsinya
module.exports = {
  content: function(){
    connection.query("SELECT * FROM blog;",function(error,results,fields){
      if(!!error){
        console.log('kaga konek');
      }else{
        console.log(results);
      }
    });
  }
}

Jawaban
foto rachmatsasongko
410 Kontribusi 422 Coto
2 tahun yang lalu
Agan modul koneksinya pakai apa? Modul asli mysql? Coba pakai promise atau callback gan. Javascript beda dengan PHP, javascript sifatnya nonblocking jadi pada saat console.log hasilnya belum keluar. Dan javascript ga bisa 'menunggu' hasil kecuali pakai promise atau callback.

foto dalikewara
351 Kontribusi 257 Coto
2 tahun yang lalu
Emang kagak bisa, soalnya kamu return di dalam fungsi connection.query(). Karena JS itu sifatnya asynchronous, maka mau nggak mau kamu harus bikin sebuah callback.
module.exports = {
  content: function(){
    connection.query("SELECT * FROM blog;",function(error,results,fields){
      if(!!error){
        console.log('kaga konek');
      }else{
        return results; // Return ini di dalam fungsi connection.query()
      }
    });

    // Kalau mau mengembalikan return ke fungsi yang kamu panggil, return harusnya ada di sini.
    // Misal.
    return 'Data ditemukan';
  }
}
Nah, kamu harus bikin fungsi callback agar bisa mereturn hasil query kamu, contoh:
module.exports = {
  content: function(callback){
    connection.query("SELECT * FROM blog;",function(error,results,fields){
      if(!!error){
        callback(err);
      }else{
        callback(null, result);
      }
    });
  }
}


Login untuk diksusi di forum sekolah koding