2014-09-29 57 views
3

這可能有一個非常簡單的答案,但我沒有看到它。使用原始Sequelize查詢替換:避免單引號?

我想用Sequelize做raw query

var sequelize = require('sequelize'); 
sequelize 
    .query("LOAD DATA LOCAL INFILE :file 
      INTO TABLE :table 
      FIELDS TERMINATED BY ',' ENCLOSED BY '\"' LINES TERMINATED BY '\n';", 
      null, 
      {raw:true}, 
      {file: datasetPath, table: "dataset_" + datasetName}) 

的問題是,替換字符串都包含了:file替換單引號(這是很好的,因爲它是一個路徑)和:table更換(其是不好的,因爲它只是一個無用的表名,並打破了查詢)。如何在表名替換的情況下避免使用這些引號?

謝謝。

+0

要解決它,我想你可以使用tableName.replace(/ ['「] + /克,‘’),它去掉引號圓弦,看到http://stackoverflow.com/questions/19156148/i-want -to-刪除雙引號從 - 一個字符串 – mwarren 2014-09-29 12:20:16

回答

1

如果您確信datasetName永遠不會包含SQL注入的可能性,可以直接插入表名到查詢,像這樣:

sequelize 
    .query("LOAD DATA LOCAL INFILE :file 
      INTO TABLE dataset_" + datasetName + " 
      FIELDS TERMINATED BY ',' ENCLOSED BY '\"' LINES TERMINATED BY '\n';", 
      null, 
      {raw:true}, {file: datasetPath}) 

發表mwarren的評論並沒有真正真的在這種情況下工作 - Sequelize看到它是一個插入的字符串,並相應地逃脫它。