无法使用nodejs从mysql数据库中的数组插入元素
实际上,我在使用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
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
});