用knex.js查询多个表

我想使用Expres.jsknex.js两个表格来渲染,只使用一个get函数,以便在一个HTML模板中使用两个表格中的数据。 当我查询只有一个表(学校或学生),但我不知道如何处理两个表。 任何build议?

 app.get('/schools', function(req, res) { knex.select() .from('schools', 'students') .then(function(schools, students) { res.render('schools', { schools: schools, students: students }); }).catch(function(error) { console.log(error); }); }); 

你的方法确实有效,但我build议你这个成语,以避免地狱 (见更好的例子的链接)。

 router.get("/schools",function(req,res){ var schools knex("schools").select().then(function(ret){ schools=ret return knex("students").select() }).then(function(students){ res.render("schools",{ students: students, schools: schools }) }) }) 

在一些reference key的基础上,你需要使用join使用多个表格这里是用引用键连接两个表格的example

表1: 用户和表2: 帐户

而引用键是user's primary key

 .then(function() { return knex('users') .join('accounts', 'users.id', 'accounts.user_id') .select('users.user_name as user', 'accounts.account_name as account'); }) 

希望这可以给你更好的想法。

有关更多参考,请参阅文档

我find了解决办法,对于这个问题,它正在工作,只是添加一个新的查询到前一个.then并将其作为parameter passing,所以我可以呈现两个表相同的.html并单独使用它们。

  knex.select() .from('schools') .then(function(schools){ knex.select() .from('students') .then(function(students) { res.render('schools', { students: students, schools: schools }); }); }).catch(function(error) { console.log(error); });