knex选择结果返回变量 [英] knex select result return to a variable
问题描述
我需要获取knex
选择查询结果到一个变量.
I need to get knex
select query result to a variable.
function getUserPlanDetailsWithOutCb(user_id) {
var dataArr =[];
knex('user_plans').select('*').where({ 'user_id': user_id }).then(function(result) {
result.forEach(function(value) {
dataArr.push(value)
});
//return dataArr;
});
return dataArr;
}
var result = getUserPlanDetailsWithOutCb(12);
我尝试在knex
中的回调内部和外部返回值.对于上面的代码,我得到的结果为 []
对于第二个(return inside callback)
,我得到的结果为
I have tried return value outside and inside of the call back in knex
. For above code i got the result as [ ]
For second one (return inside callback)
i got the result as
{
"isFulfilled": false,
"isRejected": false
}
推荐答案
要使用Promises返回变量,请对数据检索功能执行以下操作:
To get your variable returned using Promises, do the following to the data retrieval function:
并注意:return knex(
将Promise对象返回给调用方,而return dataArr
将值返回给调用方的.then()
promise子句.
And note: The return knex(
returns the Promise object to the caller, and the return dataArr
returns the value to the caller's .then()
promise clause.
function getUserPlanDetailsWithOutCb(user_id) {
var dataArr =[];
return knex('user_plans').select('*')
.where({ 'user_id': user_id })
.then(function(result) {
result.forEach(function(value) {
dataArr.push(value)
});
return dataArr;
});
}
通过以下方式调用函数:
Call the function via:
var result;
var aPromise = getUserPlanDetailsWithOutCb(12)
.then(function(result) {
result = value;
});
aPromise
解析时将设置result
变量.
使用var aPromise
调用该函数将导致程序执行在Promise实现和设置result
之前继续,这可能不是您想要的.因此,您可以改用await
(如@Abhyudit Jain所指出的那样),但是我还没有做到这一点,所以如果尝试的话,我会为您弄乱语法.
Calling the function using var aPromise
will cause program execution to continue before the Promise is fulfilled and the result
is set, which may not be what you want. So you can use await
instead (as @Abhyudit Jain notes), but I haven't done that, so I would mess up the syntax for you if I tried.
干杯!加里.
这篇关于knex选择结果返回变量的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!