2017-01-23 3 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' , и 'categories' в своих соответствующих оболочках callbcak. Таким образом, при каждом последующем вызове в массив добавляются новые результаты - он не будет опустошен. – 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

Код не работает .... Что-то по-прежнему не так –