Node.js 如何将knex查询存储在变量中?
有没有办法在knex查询中存储变量?现在,我可以通过执行以下操作来console.log查询结果:Node.js 如何将knex查询存储在变量中?,node.js,postgresql,orm,Node.js,Postgresql,Orm,有没有办法在knex查询中存储变量?现在,我可以通过执行以下操作来console.log查询结果: knex.select().table('users').then(function(result) { result.forEach(function(value) { console.log(value); }); }); 但是我想将查询结果存储在一个变量中—类似于这样: var query = knex.select().table('users') 所以
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
正如@ShanShan提到的,您的
knex
查询是异步运行的,因此您对console.log的调用是在返回查询结果之前执行的
将结果传递到后,您需要处理/使用这些结果,然后
:
return knex('users') // select * from "users"
.then(function (users) {
return processUsers(users)
})
.then(function (processed) {
// do something with processed users
})
正如@ShanShan提到的,您的knex
查询是异步运行的,因此您对console.log的调用是在返回查询结果之前执行的
将结果传递到后,您需要处理/使用这些结果,然后
:
return knex('users') // select * from "users"
.then(function (users) {
return processUsers(users)
})
.then(function (processed) {
// do something with processed users
})
尝试将控制台放在最后一个结束括号内,您将能够在控制台中打印数组的长度。尝试将控制台放在最后一个结束括号内,您将能够在控制台中打印数组的长度。这是因为您正在进行异步调用。这里有更多信息:knex返回一个承诺,因此您需要使用async/await或解析该承诺来将查询结果存储在一个变量中。对于例如var query=await knex.select().table('users')
这是因为您正在进行异步调用。这里有更多信息:knex返回一个承诺,因此您需要使用async/await或解析该承诺来将查询结果存储在一个变量中。对于egvar query=wait knex.select().table('users')