如何在节点js

时间:2015-05-31 15:11:30

标签: javascript mysql node.js

我想检查mysql中存在的记录,我在Node js中工作。我的代码是:

//Some code before where I get classes

for (var m = 0; m <= (classes.length-1); m++) {
    var Myurl = classes[m];

    (function(Myurl){
        var connection = mysql.createConnection({
            host: 'localhost',
            user: 'root',
            password: 'password',
            database: 'mydatabase',
        });
        connection.connect();

        //How do I write the query correctly?
        var query = connection.query('SELECT * FROM mydatabase WHERE UrlLink=? LIMIT 1', [Myurl], function(err, rows, fields) {
            if (err) 
                throw err;

            SqlNames = rows;
            logNames();

            //If UrlLink is not present in mydatabase, then I want to proceed with:
            request(Myurl,  function(err, resp, body) {
                // ...
            }
        });

        function logNames() {
            console.log(SqlNames);
        }

        connection.end();
    };
})(Myurl);

所以,我想检查数据库中是否存在记录,如果它不存在,我想处理请求,并将其添加到数据库中。现在我收到一个错误:

  

未定义连接

1 个答案:

答案 0 :(得分:0)

您的连接未定义的原因是您在JavaScript闭包中创建它。初始化函数内部的变量时,其作用域会阻止从该函数外部访问它。

以下是一些示例代码:

var Myurl = classes[m];
var connection = mysql.createConnection({ // Notice how this is not in a function?
  host     : 'localhost',
  user     : 'root',
  password : 'password',
  database : 'mydatabase',
});
connection.connect();
// Just like before.

在不知道您的数据库架构的情况下,我无法告诉您这是否是正确的查询,但它看起来正确无误。