knex select 结果 return 到一个变量
knex select result return to a variable
我需要获取 knex
select 查询结果到一个变量。
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 值。对于上面的代码,我得到的结果是 [ ]
对于第二个 (return inside callback)
我得到的结果是
{
"isFulfilled": false,
"isRejected": false
}
要使用 Promises 返回变量,请对数据检索函数执行以下操作:
并注意:return knex(
returns Promise 对象给调用者, return dataArr
returns 给调用者的值 .then()
承诺条款。
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;
});
}
通过以下方式调用函数:
var result;
var aPromise = getUserPlanDetailsWithOutCb(12)
.then(function(result) {
result = value;
});
result
变量将在 aPromise
解析时设置。
使用var aPromise
调用函数会导致程序在Promise 完成并设置result
之前继续执行,这可能不是您想要的。因此,您可以改用 await
(如@Abhyudit Jain 所述),但我没有这样做,所以如果我尝试的话,我会弄乱语法。
干杯!加里
我需要获取 knex
select 查询结果到一个变量。
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 值。对于上面的代码,我得到的结果是 [ ]
对于第二个 (return inside callback)
我得到的结果是
{
"isFulfilled": false,
"isRejected": false
}
要使用 Promises 返回变量,请对数据检索函数执行以下操作:
并注意:return knex(
returns Promise 对象给调用者, return dataArr
returns 给调用者的值 .then()
承诺条款。
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;
});
}
通过以下方式调用函数:
var result;
var aPromise = getUserPlanDetailsWithOutCb(12)
.then(function(result) {
result = value;
});
result
变量将在 aPromise
解析时设置。
使用var aPromise
调用函数会导致程序在Promise 完成并设置result
之前继续执行,这可能不是您想要的。因此,您可以改用 await
(如@Abhyudit Jain 所述),但我没有这样做,所以如果我尝试的话,我会弄乱语法。
干杯!加里