Доброго времени суток!
Пишу приложение на js для node js. Суть программы: подключаемся к сайту по http, делаем запрос, получаем json объект, записываем его в mysql. Для запросов использую модуль "request" тут проблем никаких нет. typeof (body) Object. А вот дальше я не знаю что с ним делать. Дело в том что этот body представляет из себя массив вложенных объектов(массив объектов некоторые из свойства которых тоже объекты со своими свойствами). Имена свойств объектов не совпадают с именами таблиц и прежде чем поместить в таблицу некоторые свойства нужно сложить.
Я прочитал про jsonrevived там говорится о переопределении типов значений свойств объектов, а вот можно ли полностью переписать весь массив объектов, поменять его структуру, имена свойств итд? примеров не нашел. Такое вообще возможно?
За неимением лучшего я просто создал конструктор объекта который соответствует mysql таблицам и в цикле скопировал в новый массив объектов уже без вложений. Как теперь его вставить в sql insert? , будучи просто закинутым sql не распознает в этом строки и таблицы, а в цикле перебирать массив не получается потому что sql.query асинхронная функция она не видит перебора только последнее значение. Как быть.
собственно сам код
function flf (key, value) {
if (key == 'c') return (value = Boolean(value));
if (key == 'f') return new Date(value*1000);
return value;
};
function molotapi(){ req({ url : url,json : true,jsonReviver : flf},function(error,response,body){
if(!error && response.statusCode == 200)
{
var pet = [];
for (var i in body.response)
{
pet[i] = new SuperPet(
body.response[i].a+" "+body.response[i].b,
body.response[i].e.f,
body.response[i].d,
body.response[i].c,
body.response[i].hasOwnProperty("v"),
body.response[i].e.p);
};
console.log(pet);
client.getConnection(function(error,connection){
connection.query('INSERT INTO pets SET ?',pet, function(error,result){if(error) console.log(error); connection.release() });
});
}
});};
var timer = setInterval(molotapi,300000);