Таким образом, за исключением уязвимостей SQL, вы можете лучше провести время с обещанной функцией con.query
, называемой здесь queryP()
.
Я не уверен, что смогу захватить исходную логику c вашего кода, поскольку он многократно использовал result
, и т. Д. c., Но идея должна быть там.
Обратите внимание, , что здесь возможна проблема в том, что если несколько одновременных запросов изменяют wp_posts
, изменяемые идентификаторы записей могут измениться. Вы можете посмотреть на это, чтобы получить последний вставленный идентификатор .
function queryP(con, sql, variables = []) {
return new Promise((resolve, reject) => {
con.query(sql, variables, (err, result, fields) => {
if (err) {
return reject(err);
}
return resolve({ result, fields });
});
});
}
async function processDataThing(con, result, dataThing) {
var source = dataThing["source"];
var text = dataThing["text"];
var quality = dataThing["quality"];
const r1 = await queryP(
con,
"INSERT INTO `wp_posts` ( `post_author`, `post_date`, `post_date_gmt`, `post_content`, `post_title`,`post_excerpt`, `post_status`,`comment_status`, `ping_status`,`post_password`, `post_name`,`to_ping`,`pinged`, `post_modified`, `post_modified_gmt`,`post_content_filtered`,`post_parent`, `guid`,`menu_order`, `post_type`, `post_mime_type`,`comment_count`) VALUES (1, '" +
fhoy +
"', '" +
fhoy +
"', '', '" +
make +
"','', 'publish', 'closed', 'closed','','" +
make +
"','','', '" +
fhoy +
"', '" +
fhoy +
"','', '" +
result[0].ID +
"','','0', 'dt_links','' ,0);",
);
console.log("1 registro link insertado");
const r2 = await queryP(
con,
"SELECT ID FROM wp_posts WHERE post_type='dt_links' ORDER BY ID DESC LIMIT 0,1",
);
const result2 = r2.result;
const r3 = await queryP(
con,
"INSERT INTO wp_postmeta (post_id, meta_key, meta_value) VALUES (" +
result2[0].ID +
",'_dool_url', '" +
source +
"'),(" +
result2[0].ID +
",'_dool_type','" +
text +
"'),(" +
result2[0].ID +
",'_dool_quality','" +
quality +
"');",
);
}
// ...
async function doThings(con, getData) {
const { result } = await queryP(con, "SELECT ID FROM wp_posts ORDER BY ID DESC
LIMIT 0,1");
const dataThingPromises = getData.map(dataThing => processDataThing(con, result, dataThing));
return await Promise.all(dataThingPromises);
}
// ...
doThings(con, getData).then(() => console.log("All done!"));