2015-06-27 60 views
0

我有一個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]未定義,不能添加圖像。 ¿我該如何解決這個問題?

如果第一次獲取路徑中的記錄,然後將圖像調用到另一個函數傳遞記錄得到並迭代它們,也許可以,但是我想知道是否存在更簡單的方法。

謝謝。

回答

0

解決迭代只爲每個:

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工作,並與正常或對不?