knex选择结果返回变量 [英] knex select result return to a variable

查看:83
本文介绍了knex选择结果返回变量的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我需要获取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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆