在嵌套的MySQL查询中访问父记录

问题描述:

我有一个MySQL嵌套查询的问题。首先,我想获取所有产品,然后在嵌套查询中遍历所有产品(每个产品都是JSON),并为每个产品获取其图像,从而为当前产品添加一个关键'图像'。在嵌套的MySQL查询中访问父记录

exports.findAll = function(callback) { 
    var Database = require('../config/database.js') 
    var DBConnection = new Database() 
    var connection = DBConnection.connect() 

    connection.query('SELECT * FROM product', function(err, records, fields) { 
    var products = records 
    for(var i=0; i<products.length; i++) { 
     connection.query('SELECT Image FROM product_images WHERE Product = ?', [products[i].Id], 
     function(err, images, fields) { 
      console.log(products[i]) 
     }) 
    } 
    DBConnection.disconnect() 
    callback(err, products) 
    }) 
} 

在嵌套查询中,products [i]未定义,不能添加图像。 ¿我该如何解决这个问题?

如果第一次获取路径中的记录,然后将图像调用到另一个函数传递记录得到并迭代它们,也许可以,但是我想知道是否存在更简单的方法。

谢谢。

解决迭代只为每个:

exports.findAll = function(callback) { 
    var Database = require('../config/database.js') 
    var DBConnection = new Database() 
    var connection = DBConnection.connect() 
    var query = 'SELECT * FROM product' 

    connection.query(query, function(err, products) { 
    products.forEach(function(cur) { 
     var query = 'SELECT Image FROM product_images WHERE Product = ?' 
     connection.query(query, [cur['Id']], function(err, images) { 
     cur['images'] = images 
     callback(err, products) 
     }) 
    }) 
    DBConnection.disconnect() 
    }) 
} 

有人能解释我为什么用foreach工作,并与正常或对不?