ash11tw寫到:
nodejs基本上都是async的
所有東西都要在callback裡面跑
db_connection.query("SELECT * FROM `zp_machine` LEFT JOIN `zp_customer` ON `zpm_zpc_id` = `zpc_id` WHERE `zpm_sn` =?",[username], function(err, rows, fields) {
//callback通常會回傳兩個值
//第一個通常是error
//所以一開始會檢測這個
if(err){
console.log(err);
return ;
}
//接下來是從mysql取出來的值
if (rows.length)
{
console.log('認證成功');
return true;
}
else
{
console.log('認證失敗');
return false;
}
假如你有接下來認證的code要寫在這裡
if (auth(username)) <==不會為 true
{
//do........
}
});
基本上 nodejs is an event driven structure so every result is passed to callback function for next step
daidai寫到:
請教有使用過 node.js 存取 mysql 的版友,同步及非同步問題
最近公司主管挖了個洞給我跳,要我做遊戲伺服器,在上位的主管認為不過就是個聊天室,但是沒想到底層協定的應用及遊戲客戶端同步接收訊息的問題,單機版的遊戲已經出貨出去,還跟客戶承諾後續會更新成連線版。小弟我的本職是網頁程式設計師
,用PHP設計公司網頁及系統,找遍了 google 相關文章,實在想不出問題點在哪,所以特來請教大家一些觀念
我用 node.js 及 socket.io(支援多種協定及現成的 room 及廣播機制) 實做聊天室訊息推播架構,想把這個應用在遊戲伺服器的同步訊息收發,使用 websocket 協定,在做連線驗證機制時,碰到了難題,
以下的函式都沒回傳值,我大概知道是同步、非同步問題,也嘗試使用
https://github.com/caolan/async (async.js) 這個套件,不過始終實做不出來,麻煩大家了,感謝
function auth(username)
{
// 引入 mysql connect
var config = require("./mysql_db.js");
var db_connection = config.db;
db_connection.query("SELECT * FROM `zp_machine` LEFT JOIN `zp_customer` ON `zpm_zpc_id` = `zpc_id` WHERE `zpm_sn` =?",[username], function(err, rows, fields) {
if(err){
console.log(err);
return ;
}
if (rows.length)
{
console.log('認證成功');
return true;
}
else
{
console.log('認證失敗');
return false;
}
});
}
if (auth(username)) <==不會為 true
{
//do........
}
最近為了完成這個專案,沒眠沒夜的在看資料還有 try code ,忽略了結婚不到一年的老婆(一直被唸說假日不帶她出門),再加上與我家人相處的小問題,她在近日提出離婚,我也回答尊重她的想法,她又要求我暫時不要給家人知道,只好順便附上這小段牢騷,哀...這麼努力是為了誰...還不是為了撐住這個家
[daidai 在 2013-7-22 09:18 AM 作了最後編輯]