在嵌套的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工作,并与正常或对不?