繁体   English   中英

使用nodejs mysql模块从mysql获取JSON数据

[英]get JSON data from mysql using nodejs mysql module

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

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

如何使用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"],
    ...

这就是为什么永远不要将值直接串联到查询中的原因(SQL注入攻击)。

相反,您应该使用占位符:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM