繁体   English   中英

如何分解 JSON object 以插入 MySQL 表?

[英]How do I break up a JSON object to insert into a MySQL table?

概括

我有一些 JSON 从这里回来:

// Now Get Only New Listings
 finalArray = _.difference(existingResults, items);

我需要将这些值插入其中:

列

一些进来的数据不能填满所有的列。 在这种情况下,我想将它们留空。

这是数据的样子(可能是众多数据之一)......

{
    price: '$6,000',
    title: '1999 Jeep Wrangler SE Sport Utility 2D',
    location: 'Auburndale, Florida',
    miles: '12K miles',
    imgUrl: 'http://www.example.com/pic.jpg',
    itemURL: '/products/item/36427/'
  }

所以我需要弄清楚如何通过每个 JSON object 来 go,然后插入正确的列。

var insertQuery = 'Your code here! :)  ';

我想该查询需要在某个地方循环吗? 还是一个大的插入语句?

任何建议或代码将不胜感激。 谢谢。


笔记

使用:NodeJS 和 JawsDB MySQL(如果信息很重要)

以下方法仅在您的有效负载没有任何嵌套对象时才有效。使用 ES6 Maps 来完成这项工作。 我已使用connection.escape()删除 JSON 中的任何可注入脚本,以防止 SQL 注入攻击。 我希望您已经为 node.js 安装了 mysql连接器。

const mysql      = require('mysql');
const connection = mysql.createConnection({
  host     : 'localhost',
  user     : 'me',
  password : 'secret',
  database : 'my_db'
});

connection.connect();

const payload = {
    price: '$6,000',
    title: '1999 Jeep Wrangler SE Sport Utility 2D',
    location: 'Auburndale, Florida',
    miles: '12K miles',
    imgUrl: 'http://www.example.com/pic.jpg',
    itemURL: '/products/item/36427/'
}

const map = new Map(Object.entries(payload));
const keys = map.keys();
const values =  map.values();

const insertQuery = `
INSERT INTO TABLE_NAME (${connection.escape(keys.next().value)},
                        ${connection.escape(keys.next().value)},
                        ${connection.escape(keys.next().value)},
                        ${connection.escape(keys.next().value)},
                        ${connection.escape(keys.next().value)},
                        ${connection.escape(keys.next().value)})
            VALUES     (${connection.escape(values.next().value)},
                        ${connection.escape(values.next().value)},
                        ${connection.escape(values.next().value)},
                        ${connection.escape(values.next().value)},
                        ${connection.escape(values.next().value)},
                        ${connection.escape(values.next().value)});
`
connection.query(insertQuery, function (error, results, fields) {
  if (error) throw error;
  // ...
});
console.log(insertQuery);

暂无
暂无

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

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