2017-01-23 26 views
0
var results = []; 
var categories = []; 

async.parallel({ 
    results: function(callback) { 
    const query2 = client.query('SELECT * FROM entries ORDER BY id desc'); 
    query2.on('row', (row) => { 
     results.push(row); 
    }); 

    query2.on('end',() => { 
     callback(null, results); 
    }) 
    }, 
    categories: function(callback) { 
    const query3 = client.query('SELECT * FROM categories ORDER BY id desc'); 
    // Stream results back one row at a time 
    query3.on('row', (row) => { 
     categories.push(row); 
    }); 

    query3.on('end',() => { 
     callback(null, categories); 
    }); 
    } 
}, function(err, results) { 
    if (err) { 
    return res.send(err); 
    } 
    return res.render('index2.ejs',{"results" : results, "categories" :categories}); 
}); 

這是我做了什麼....但它仍然無法正常工作如何將多個數組對象發送到EJS模板

+0

除了你的其他問題,你要移動的'results' ,以及各自的callbcak包裝中的'categories'聲明。通過這種方式,每次後續調用都會將新結果添加到數組中 - 它不會被清空。 – Zlatko

回答

-1

這是你如何使用您的async.parallel結果:

你的情況
async.parallel({ 
    numbers: function(cb) { cb(null, [1, 2, 3]); }, 
    letters: function(cb) { cb(null, ['a', 'b']); } 
}, 
function (err, results) { 
    console.log(results); // "{ numbers: [ 1, 2, 3 ], letters: [ 'a', 'b' ] }" 
}); 

所以:

async.parallel({ 
    results: firstQueryCB, 
    categories: secondQueryCB 
}, 
function everything(err, results) { 
    if (err) { throw err; // actually do something. } 
    // your `results` is now `{results: [], categories: []}` 
    res.render('index2.ejs', { 
    results: results.results, 
    categories: results.categories, 
    }); 
}) 
+0

仍然無法運行.... –

+0

有沒有什麼錯誤?或者只是ejs空?你的模板是什麼樣的?可能與您的數據庫響應不符合您的預期。 – Zlatko

+0

我得到的響應爲JSON .....但不能將2個數組傳遞給ejs模板 –

0

您可以使用async庫來解決這一問題。

var async = require('async'); 

var results2 = []; 
var categories2 = []; 

async.parallel({ 
    results: function(callback) { 
    const query2 = client.query('SELECT * FROM entries ORDER BY id desc'); 
    query2.on('row', (row) => { 
     results2.push(row); 
    }); 

    query2.on('end',() => { 
     callback(null, results2); 
    }) 
    }, 
    categories: function(callback) { 
    const query3 = client.query('SELECT * FROM categories ORDER BY id desc'); 
    // Stream results back one row at a time 
    query3.on('row', (row) => { 
     categories2.push(row); 
    }); 

    query2.on('end',() => { 
     callback(null, categories2); 
    }); 
    } 
}, function(err, results) { 
    if (err) { 
    return res.send(err); 
    } 
    return res.render('index2.ejs',results); 
}); 
+0

你沒有通過渲染方法的類別....如何通過它? –

+0

代碼沒有運行....東西仍然是錯誤的 –