2012-01-22 5 views
0

新しいNode.jsのために、ちょうど次の操作を実行する方法を見つけ出すカント:のNode.jsとMySQLの機能の使用状況

私は私のdbモジュール上でこれを持っている:

var mysql = require('mysql'); 
var MY_DATABASE='nodejs_mysql'; 

var client = mysql.createClient({ 
user: 'root', 
password: 'root', 
}); 

と、このテーブルを構築イム:

client.query(
'CREATE TEMPORARY TABLE '+USER+ 
'(username VARCHAR(255), '+ 
'password VARCHAR(255), '+ 
'name VARCHAR(255), '+ 
'picture VARCHAR(255), '+ 
'PRIMARY KEY(username))' 
); 

と後で、私はこれを実行したい:

client.query('select username, password from ' + USER + 'where username=?',[req.body.username] , 'AND password=?', [req.body.password] 
function (err, results, fields) { 
     if (err) { 
      throw err; 
     } 
    //some actions performed here 
}); 

これらはすべて同じdataBase.jsファイルにあります。上に書かれたクエリにパラメータとして

server.jsとバック一定の値を取得:

は、どのように私は名前の別のファイルからユーザ名とパスワードを送信することができますか?

それをする方法はありますか?上に書かれたクエリにパラメータとして

server.jsとバック一定の値を取得:

+0

あなたは正確にやってみたかったが、あなたは、ノードの[モジュール](http://nodejs.org/docs/latest/api/modules.html)と多分について読む必要があるように一見、それが見えるかわからない静かな'module.exports'(http://nodejs.org/docs/latest/api/modules.html#module.exports)私は何を意味するのか – elmigranto

+0

は依頼することです機能で「ラップ」のコードの最後の部分に、それはokですparamsを受け取って値を返しますか? + USER +「?ユーザ名=」、[req.body.username]、 '「から選択し、ユーザー名、パスワード」 client.query(: – Itzik984

答えて

2

わかりました。 dataBase.jsに一時テーブルを作成し、このテーブルのクエリをserver.jsの要求ハンドラで実行したいとします。それはそれだ場合、あなたは以下のaproach考慮する必要があります。

// dataBase.js 

var mysql = require('mysql'); 
var MY_DATABASE='nodejs_mysql'; 

// connect to database 
var client = mysql.createClient({ 
    user: 'root', 
    password: 'root', 
}); 

// create temporary table 
client.query(
    'CREATE TEMPORARY TABLE '+USER+ 
    '(username VARCHAR(255), '+ 
    'password VARCHAR(255), '+ 
    'name VARCHAR(255), '+ 
    'picture VARCHAR(255), '+ 
    'PRIMARY KEY(username))' 
); 

// that's what I think you need. And yes, it looks like "a good to rap" for me. 
module.exports.getInfoFromTemporaryTable : function(username, password, callback) { 
    client.query(
    'select username, password from ' + USER + 'where username=?', 
    [req.body.username] , 'AND password=?', [req.body.password], 
    callback 
); 
} 

をあなたからUSER変数を取得する場所、私は理解できない唯一のものです。この瞬間に注意を払う。多分それをgetInfoFromTemporaryTable()機能に渡すでしょう。

// server.js 
var db = require('./lib/dataBase'); 

app.get(someRoute, function(req, res) { 
    db.getInfoFromTemporaryTable(req.body.username, req.body.password, 
    function(err, results, fields) { 
     if (err) { 
     // handle errors or something 
     return; 
     } 

     // do what you need to do, using results you got from temp table 
    }); 
}); 

私はあなたがそうコードの上、使用してMySQLモジュールに慣れていないんだがより多くのあなたが実装するために必要なものの一般的な考えのようなものです。それが助けてくれることを願って。

+0

ありがとうございました! USER変数については、変数ではなく、ここに書かれていないテーブル... :)もう一度ありがとう! – Itzik984

0

は、どのように私は名前の別のファイルからユーザ名とパスワードを送信することができますか?

exportsオブジェクトを使用してください。 NodeJSのモジュールシステムの詳細については、hereを参照してください。

// server.js 
exports.username = function { 
    return "foo"; 
}; 

exports.password = function { 
    return "bar"; 
}; 

// database.js 
require('./server.js'); 
var client = mysql.createClient({ 
    user:  server.username, // exports.username in server.js 
    password: server.password, // exports.password in server.js 
}); 
+0

は、私は、クエリに値を取得したい...私はここに誤解されたと思いますAND password =? '、[req.body.password] そしていくつかの値を返す...私はあなたの答えはそれをしないと思う。 もう少しクエリを追加して、さらに値を返す必要があります... 今はもっと明確ですか? – Itzik984

+0

あなたは正確にどこからクエリの値を取得したいですか?他のモジュール?他のDBクエリ?私が理解する限り、ソースはdataBase.jsファイルに作成された一時テーブルです。リクエストが来たら、この一時テーブルからいくつかの値を照会し、それらをリクエストハンドラで使用する必要があります。私は正しい? – elmigranto

+0

@elmigranto私は他のモジュールからクエリの値を取得したい、はい。 これは、パラメータ を受け取っていくつかのものを返す関数で最後のクエリを "ラップする"ことは良いですか? – Itzik984

0

は、なぜあなたはあなたのクエリアップを分割していますか?

// server.js 
exports.username = "Your username."; 
exports.password = "Your password."; 

// dataBase.js 
// ... mysql connection setup ... 
var server = require("./server"); 
client.query('SELECT username, password FROM `' + USER + '` WHERE username=? AND password=?', 
    [server.username, server.password], 
    function (err, results, fields) { 
    if (err) { 
     throw err; 
    } 
    // ... some actions performed here ... 
    } 
); 

あなたが聞いていたものは確かではありませんが、少なくともあなたの答えに近づけるべきだと思います。

関連する問題