有没有办法可以在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
答案 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)
尝试将控制台放在最后一个括号内,您将能够在控制台中打印阵列的长度。