无法使用nodejs从mysql数据库中的数组插入元素

无法使用nodejs从mysql数据库中的数组插入元素,mysql,node.js,node-async,Mysql,Node.js,Node Async,实际上,我在使用nodejs保存mysql数据库中数组中的一些数据时遇到了问题 这是我的密码 for (var i = 0; i < data.data.length; i++) { var imageObject = data.data[i]; var url = imageObject.images.standard_resolution.url; var id = imageObject.id; var sql = 'SELECT COUNT(*) A

实际上,我在使用nodejs保存mysql数据库中数组中的一些数据时遇到了问题

这是我的密码

for (var i = 0; i < data.data.length; i++) {
    var imageObject = data.data[i];
    var url = imageObject.images.standard_resolution.url;
    var id = imageObject.id;
    var sql = 'SELECT COUNT(*) AS imageIDCount FROM images WHERE id = ?'
    var ids
    connection.query(sql, [id], function(err, rows, fields) {
        console.log(rows[0].imageIDCount);
        if (err) throw err;
        if (rows[0].imageIDCount == 0) {
            console.log(id + " doesn't exist"); // ### the ID at this point is always the last from that array
            //insertImage(id, url);
        } else {
            // console.log("ID exists");
        }
    });
}
当我从带有请求框架的RESTAPI获得响应时,就会运行此代码


所以我的问题是,当我从count查询中得到结果时,没有具有特定id的元素,我总是得到相同的id。我想这是因为我在那里使用了相同的变量id,但如何修复它?我希望有人能帮助我。

在这种情况下,您是节点异步事件循环的受害者。您正在执行同步for循环并定义id:


它起作用了!谢谢你的快速帮助。我建议这样做,但我对node.js完全陌生。
for (var i = 0; i < data.data.length; i++) {
    var id = imageObject.id;
}
async.each(data.data, function(imageObject, callback) {
    var sql = 'SELECT COUNT(*) AS imageIDCount FROM images WHERE id = ?'
    connection.query(sql, [imageObject.id], function(err, rows, fields) {
        if (err) callback(err);
        if (rows[0].imageIDCount == 0) {
            console.log(id + " doesn't exist");
            insertImage(imageObject.id, imageObject.images.standard_resolution.url, function(err) {
                callback(err); // fires the callback to async
            })
        } else {
            console.log(id + " already exists");
            callback(); // maybe you want an error here too?
        }
    });
}, function(err, results) {
    // all of your db queries are completed
});