如何在变量中存储knex查询?

时间:2015-12-12 16:47:40

标签: node.js postgresql orm

有没有办法可以在knex查询中存储变量?现在我可以通过执行以下操作来控制查询结果。

knex.select().table('users').then(function(result) {
    result.forEach(function(value) {
        console.log(value);
    });
});

但我想将查询结果存储在变量中 - 如下所示:

var query = knex.select().table('users')

所以我可以把它传递给模板,操纵它等等......

我尝试过的一件事是创建一个空数组并将每个值推送到数组中,但由于某种原因,数组返回空:

var dataArr = [];
knex.select().table('users').then(function(result) {
    result.forEach(function(value) {
        dataArr.push(value)
    });
});
console.log(dataArr.length) // returns 0

2 个答案:

答案 0 :(得分:0)

正如@ShanShan所提到的,您的knex查询是异步运行的,因此在返回查询结果之前,您正在执行对console.log的调用。

在将结果传递给then后,您需要处理/使用结果:

return knex('users') // select * from "users"
  .then(function (users) {
    return processUsers(users)
  })
  .then(function (processed) {
    // do something with processed users
  })

答案 1 :(得分:-2)

尝试将控制台放在最后一个括号内,您将能够在控制台中打印阵列的长度。