【问题标题】:get JSON data from mysql using nodejs mysql module使用 nodejs mysql 模块从 mysql 获取 JSON 数据
【发布时间】:2014-07-29 23:26:53
【问题描述】:

我有一个大型 JSON 对象,我从文件中读取它作为文本,将其解析为 JSON 并以 blob 数据类型存储在我的 mysql 数据库中。 当我在 mysql 控制台中执行 SELECT * FROM *table* 时,我在表中看到 [object Object] 并将 JSON 作为字符串上传会出错。

ER_PARSE_ERROR:您的 SQL 语法有错误;检查手册 对应于您的 MySQL 服务器版本以获得正确的语法 在 '1000GenomeFreq": "", "dbsnpFreq": "",
附近使用 "labValidationInfo": null, "yesFrequ' 在第 1 行

如何使用 node.js 将 JSON 上传到 MySQL 数据库?

var id=0;
var json={};
var name,des;
io.on('connection', function(socket){
  socket.on('username', function(un){
    console.log("Username: "+un);
    var l=un.length;
    console.log(l);
    json=JSON.parse(un);
    name=json.label.name;
    des=json.label.description;
    console.log(name);
    switch(name){
      case 'VUS_I':id=3;
      break;    
      case 'VUS_II':id=4;
      break;
      case 'VUS_III':id=5;
      break;
      case 'VUS_IV':id=6;
      break;
    }   
    connection.query('insert into variant_card(data,effectID)values("'+json+'",'+id+')', function(err,result) {
      if(err) {
        console.log('adsfdas'+err);
        socket.emit('wru');
      } else {
        if(result==false){
          console.log("Error uploading file");
          socket.emit('wru');
        } else {
          console.log("File uploaded into database");
          socket.emit('done');
        }
      }
    });
    //socket.emit('pwd');
  });
});

JSON 文件的一部分是

{
  "1000GenomeFreq":"",
  "dbsnpFreq":"",
  "labValidationInfo":null,
  "yesFrequency":1,
  "functionallyValidated":false,
  "mutationType":"changeThis",
  "conservationScores":null,
  "isDominantSegregating":true,
  "literatureKbCount":0,
  "exomeServerFreq":"",
  "rsID":"",
  "notations":[{
    "nmTranscripts":["NM_033507"],
    ...

【问题讨论】:

    标签: javascript mysql sql json node.js


    【解决方案1】:

    这正是您永远不应将值直接连接到查询中的原因(SQL 注入攻击)。

    你应该做的是使用占位符:

    connection.query('insert into variant_card set ?',
                     { data: JSON.stringify(json), effectID: id },
                     function(err,result) {
      // ...
    });
    

    【讨论】:

    • 查看我的编辑。您需要对其进行字符串化,因为它不再是 JSON。
    猜你喜欢
    • 2016-04-22
    • 2017-12-19
    • 1970-01-01
    • 2016-09-22
    • 1970-01-01
    • 1970-01-01
    • 2013-06-18
    • 1970-01-01
    • 2011-06-16
    相关资源
    最近更新 更多