nodejs mysql不执行查询并停止脚本

时间:2018-02-28 11:15:06

标签: javascript mysql sql node.js ecmascript-6

我有一个数据库类,其中包含一些方法,可以轻松地执行某些查询,而无需将值格式化为sql查询字符串。所以这是我的删除方法,脚本停止了。

// Other Module

let filter = {
      url: 'http://www.example.com/some/route',
    },
    DB = new MySQL();

DB.delete(filter, 'found_urls').then(result => {
  console.log('The row/s are deleted.');
}).catch(error => {
  console.log('An error occured.');
  console.log(error);
});
// MySQL.js

class MySQL {

    // some methods....

    delete(filter, table, operator = '=') {
      // Parse where clauses and create query string.
      let whereCondition = MySQL.parseColumnValue(filter, operator),
        sql = `DELETE FROM ${table}`;
      // whereCondition is an array: ["url = 'http://www.example.com/some/route'"]

      if (whereCondition.length > 1) {
        sql += ` WHERE ${whereCondition.join(' AND ')}`;
      }

      console.log(sql);
      // I get "DELETE FROM found_urls WHERE url = 'http://www.example.com/some/route'"

      return new Promise((resolve, reject) => {
        console.log('You can see me.');
        this.database.query(sql, (error, result) => {
          console.log('You never see me because the script stopped.');
          if (error) {
            reject(error);
            return;
          }

          resolve(result);
        });
      });
    }
  }

前几天它完美无缺但现在停止了。我不知道这段代码有什么问题。

更新

此类将用于webcrawler,因此我认为没有必要保护它以进行SQL注入。

found_urls有大约200行,没有锁定。

错误我发现了我的问题:另一个模块出现故障。如果没有此模块,则爬网程序正在运行(使用删除操作)。

0 个答案:

没有答案