Register Register Member Login Member Login Member Login Forgot Password ??
PHP , ASP , ASP.NET, VB.NET, C#, Java , jQuery , Android , iOS , Windows Phone
 

Registered : 109,038

HOME > Client Script Forum > ช่วยด้วยจ้าคือผมจะส่งค่าในฟังค์ชัน callback ยังไงดีใน Node JS


[PHP] ช่วยด้วยจ้าคือผมจะส่งค่าในฟังค์ชัน callback ยังไงดีใน Node JS

 
Topic : 132063



โพสกระทู้ ( 256 )
บทความ ( 0 )



สถานะออฟไลน์



คือผมต้องการแยกตัว select ออกจาก connect ดาต้าเบส (ผมใช้ mongo db) ติดปัญหาคือมันไม่รู้จักตัวแปร
ความงงคือตัวแปรนั้นดันอยู่ใน callback ฟังก์ชัน จะ return ก็ไม่ได้

สรุปคือจะทำยังไงให้สามารถส่งค่า dbo ไปที่ฟังก์ชัน select_cl ได้
ไหว้ละจ้า ขอบคุณครับ

ส่วน Module --- function.js
01.var MongoClient = require('mongodb').MongoClient;
02.var url = "mongodb://localhost:27017/";
03. 
04.module.exports = {
05.    connect_db: function() {
06.         
07.         
08.        MongoClient.connect(url, function(err, db) {   
09.            if (err) throw err;
10.        
11.                        // ตรงนี้คือตัวปัญหา งงว่าจะส่งตัวแปร dbo ไปยังฟังก์ชัน select_cl ได้ยังไง
12.                        // ไม่เคยเจอแนวนี้คืนค่าตัวแปรใน callback
13.                        // return dbo;  สรุปงง
14.            dbo = db.db("dbtest");
15. 
16.                        
17.         
18.        });
19.    },
20. 
21.    select_cl: function(){
22.         
23. 
24.                // เพราะตรงนี้ไม่รู้จัก ตัวแปร dbo
25.        dbo.collection("admin").findOne({}, function(err, result) {
26.             
27.            console.log(result.title);
28.             
29.        });
30. 
31.           
32.    }
33.};


ส่วนเรียก Module --- server.js
01.// Library All
02.var express = require('express');
03.var app     = express();
04. 
05.var mongo = require('mongodb');
06. 
07.app.set('view engine','ejs');
08.app.use(express.static(__dirname));
09. 
10.// Function All
11.var func = require("./function.js");
12. 
13.app.get('/index', function (req, res) {
14. 
15.        // ส่วนตอนเรียก ------------------------------------- คือปัญหา
16.    func.connect_db();  
17.    func.select_cl();
18.    res.render('index.ejs');
19.});
20. 
21. 
22. 
23.var server = app.listen(1000, function () {
24.   var host = server.address().address;
25.   var port = server.address().port;
26.   console.log("Example app listening at http://%s:%s", host, port);
27.});




Tag : Mobile



ประวัติการแก้ไข
2018-09-16 12:12:19
2018-09-16 12:13:56
2018-09-16 12:14:54
2018-09-16 12:15:18
2018-09-16 12:17:00
2018-09-16 12:30:13
2018-09-16 12:30:42
2018-09-16 12:32:03
2018-09-16 12:33:49
Move To Hilight (Stock) 
Send To Friend.Bookmark.
Date : 2018-09-16 12:09:06 By : bank1324 View : 2678 Reply : 2
 

 

No. 1



โพสกระทู้ ( 9,590 )
บทความ ( 2 )



สถานะออฟไลน์


Code (JavaScript)
01.var MongoClient = require('mongodb').MongoClient;
02.var url = "mongodb://localhost:27017/";
03. 
04.module.exports = {
05.    connect_db: function(callback) { // ส่ง callback กลับไป
06.        MongoClient.connect(url, function(err, db) {   
07.            if (err) throw err;
08.            callback( db.db("dbtest") );
09.        });
10.    },
11.    select_cl: function(dbo){ // ผ่านค่าตัวแปรมาตรงๆ
12.        dbo.collection("admin").findOne({}, function(err, result) {
13.            console.log(result.title);
14.        });
15.    }
16.};
17.func.connect_db( (rs)=>{
18.    func.select_cl(rs);
19.    res.render('index.ejs');
20.});   // ใส่ callback เรียกอีกชั้น


ปล. หรือประกาศตัวแปร dbo แบบ global ไว้ข้างนอก ซึ่งมันจะเปลือง mem แต่งายดี


ประวัติการแก้ไข
2018-09-16 14:30:37
2018-09-16 14:40:11
2018-09-16 14:41:34
2018-09-16 14:43:34
2018-09-16 14:44:34
2018-09-16 14:47:41
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2018-09-16 14:29:07 By : Chaidhanan
 

 

No. 2



โพสกระทู้ ( 256 )
บทความ ( 0 )



สถานะออฟไลน์


ขอบคุณมากๆสำหรับแนวคิดนะ ผมลองทำแล้วเอามาแบ่งปัน ผมว่าใครต่อดาต้าเบส mongodb ต้องเจอปัญหาแบบผมแน่ ถ้าต้องการแยกไฟล์ select ออกจาก connect เพราะตัวอย่างตามเว็บมันมักอยู่รวมกัน

หลักการคือ
1 เราต้องเรียก connect ดาต้าเบส นอก route ก่อนเลย
2 ไปทำการเก็บค่าด้าต้าเบสไว้ในตัวแปร database
3 สร้างฟังชัน getdb() return database ค่ากลับมา
4 mongo.getdb() ไปเรียกดาต้าเบสที่เราเลือกไว้

server.js
01.// Library All
02.var express = require('express');
03.var app     = express();
04. 
05.app.set('view engine','ejs');
06.app.use(express.static(__dirname));
07. 
08.// Call Mongo DB
09.var mongo = require("./mongo.js");
10.mongo.connect();
11. 
12.app.get('/', function (req, res) {
13. 
14.    mongo.getdb().collection("info").find({}).toArray(function(err, result) {
15.        if (err) throw err;
16.        console.log(result);
17.    });
18. 
19.    res.render('index.ejs');
20.     
21.});
22. 
23. 
24.var server = app.listen(1000, function () {
25.   var host = server.address().address;
26.   var port = server.address().port;
27.   console.log("Example app listening at http://%s:%s", host, port);
28.});


mongo.js
01.//Config DB
02.var MongoClient = require('mongodb').MongoClient;
03.var url = "mongodb://localhost:27017/";
04.var db_name = "test";
05. 
06.// System DB
07.var odb = "";
08.var database = "";
09.module.exports = {
10.    connect: function() {
11.        MongoClient.connect(url,{ useNewUrlParser: true }, function(err, db) { 
12.            if (err) throw err;
13.            odb = db;
14.            database = db.db(db_name);
15.        });
16.    },
17.    disconnect: function() {
18.        odb.close();
19.    },
20.    getdb: function() {
21.        return database;
22.    }
23.};



ประวัติการแก้ไข
2018-09-18 12:43:00
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2018-09-17 12:46:32 By : bank1324
 

   

ค้นหาข้อมูล


   
 

แสดงความคิดเห็น
Re : ช่วยด้วยจ้าคือผมจะส่งค่าในฟังค์ชัน callback ยังไงดีใน Node JS
 
 
รายละเอียด
 
ตัวหนา ตัวเอียง ตัวขีดเส้นใต้ ตัวมีขีดกลาง| ตัวเรืองแสง ตัวมีเงา ตัวอักษรวิ่ง| จัดย่อหน้าอิสระ จัดย่อหน้าชิดซ้าย จัดย่อหน้ากึ่งกลาง จัดย่อหน้าชิดขวา| เส้นขวาง| ขนาดตัวอักษร แบบตัวอักษร
ใส่แฟลช ใส่รูป ใส่ไฮเปอร์ลิ้งค์ ใส่อีเมล์ ใส่ลิ้งค์ FTP| ใส่แถวของตาราง ใส่คอลัมน์ตาราง| ตัวยก ตัวห้อย ตัวพิมพ์ดีด| ใส่โค้ด ใส่การอ้างถึงคำพูด| ใส่ลีสต์
smiley for :lol: smiley for :ken: smiley for :D smiley for :) smiley for ;) smiley for :eek: smiley for :geek: smiley for :roll: smiley for :erm: smiley for :cool: smiley for :blank: smiley for :idea: smiley for :ehh: smiley for :aargh: smiley for :evil:
Insert PHP Code
Insert ASP Code
Insert VB.NET Code Insert C#.NET Code Insert JavaScript Code Insert C#.NET Code
Insert Java Code
Insert Android Code
Insert Objective-C Code
Insert XML Code
Insert SQL Code
Insert Code
เพื่อความเรียบร้อยของข้อความ ควรจัดรูปแบบให้พอดีกับขนาดของหน้าจอ เพื่อง่ายต่อการอ่านและสบายตา และตรวจสอบภาษาไทยให้ถูกต้อง

อัพโหลดแทรกรูปภาพ

Notice

เพื่อความปลอดภัยของเว็บบอร์ด ไม่อนุญาติให้แทรก แท็ก [img]....[/img] โดยการอัพโหลดไฟล์รูปจากที่อื่น เช่นเว็บไซต์ ฟรีอัพโหลดต่าง ๆ
อัพโหลดแทรกรูปภาพ ให้ใช้บริการอัพโหลดไฟล์ของไทยครีเอท และตัดรูปภาพให้พอดีกับสกรีน เพื่อความโหลดเร็วและไฟล์ไม่ถูกลบทิ้ง

   
  เพื่อความปลอดภัยและการตรวจสอบ กระทู้ที่แทรกไฟล์อัพโหลดไฟล์จากที่อื่น อาจจะถูกลบทิ้ง
 
โดย
อีเมล์
บวกค่าให้ถูก
<= ตัวเลขฮินดูอารบิก เช่น 123 (หรือล็อกอินเข้าระบบสมาชิกเพื่อไม่ต้องกรอก)





ThaiCreate.Com Logo
© www.ThaiCreate.Com. 2003-2025 All Rights Reserved.
ไทยครีเอทบริการ จัดทำดูแลแก้ไข Web Application ทุกรูปแบบ (PHP, .Net Application, VB.Net, C#)
[Conditions Privacy Statement] ติดต่อโฆษณา 081-987-6107 อัตราราคา คลิกที่นี่