Postingan lainnya
Kelas Premium!
Belajar Javascript untuk website
Gunakan kupon "mulaijs" untuk diskon 75 ribu!
NodeJS + Mysql return data and getting ??
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);
}
});
}
}
3 Jawaban:
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.
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);
}
});
}
}
saya punya masalah yang sama. coba cara diatas juga belum bisa (mungkin belum faham). ada yang bisa bantu jelaskan kembali. mohon maaf masih pemula