在每次迭代上运行查询

时间:2015-12-16 14:42:10

标签: mysql node.js callback node-mysql

有人可以帮助我查询返回的查询吗?

我希望查询迭代上一个查询的结果,看看是否使用了凭证

这是查询的代码:

db.query('SELECT * FROM Table WHERE ID in ?', [(1,2,3,4)],
function(err, rows) {
    if (err) throw err
    var items = []
    rows.forEach(function(i) {
        var item = {
            'item1': i.item1,
            'item2': i.item2,
            'item3': i.item3
        }
        db.query('SELECT * FROM Table2 WHERE ID = ?', [i.ID],
        function(err, rows2) {
            if (err) throw err
            item.subvalue = rows2
        })
        items.push(item)
        })
        res.json(items)
    })

1 个答案:

答案 0 :(得分:0)

所以我最后这样做了。使用多个语句,其中第二个查询返回查询1中结果的所有可能结果。然后我可以遍历结果1和结果2。

仍然不确定这是最好的方法,但它确实有效。任何建议都非常欢迎

db.query('SELECT 1 WHERE Range ?; SELECT 2 WHERE ID IN (SELECT 1)', 
[req.body.hotelid, '2015-11-01', '2015-11-30', 
req.body.hotelid, '2015-11-01', '2015-11-30'],
    function(err, result) {
        if (err) console.log(err)
        else
            var items = []
        result[0].forEach(function(i) {
            var giftVoucherUsed = []
            var item = {
                'ID': i.BookingID,
                'BookingDate': i.BookingDate,
                'GuestName': 'Guestname'
            }                
            result[1].forEach(function(g){
                if(g.BookingID == i.BookingID){
                    giftVoucherUsed.push(g) 
                }
            })
            item['GiftVoucher'] = giftVoucherUsed

            items.push(item)
        })
       res.json(items)
    });