Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/324.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在node.js输出中不返回JSON输出_Javascript_Java_Node.js_Json_Knex.js - Fatal编程技术网

Javascript 在node.js输出中不返回JSON输出

Javascript 在node.js输出中不返回JSON输出,javascript,java,node.js,json,knex.js,Javascript,Java,Node.js,Json,Knex.js,我有一个叫做用户反馈的表 对于类型,我们有4个默认值-1-建议、2-请求、3-损坏报告、4-事件 对于状态,我们有3个默认值-0-打开、1-进行中、2-关闭 我想在每种状态的每种类型下显示如下记录计数[所需输出] { "status": "success", "code": 200, "data": { "1"(Type): { "0" (status): 20, (total) "1": 19, "2": 28 }, "

我有一个叫做用户反馈的表

对于类型,我们有4个默认值-1-建议、2-请求、3-损坏报告、4-事件

对于状态,我们有3个默认值-0-打开、1-进行中、2-关闭

我想在每种状态的每种类型下显示如下记录计数[所需输出]

{
  "status": "success",
  "code": 200,
  "data": {
    "1"(Type): {
      "0" (status): 20, (total)
      "1": 19,
      "2": 28
    },
    "2": {
      "0": 20,
      "1": 19,
      "2": 28
    },
    "3": {
      "0": 20,
      "1": 19,
      "2": 28
    },
    "4": {
      "0": 20,
      "1": 19,
      "2": 28
    }
  }
}
    {
    "status":"success",
    "code":200,
    "data":[
        {
          "type":1,
          "status":0,
          "count(status)":2
        },
        {
          "type":2,
          "status":0,
          "count(status)":1
        },
        {
          "type":1,
          "status":1,
          "count(status)":1
        },
        {
          "type":1,
          "status":2,
          "count(status)":1
        }
          ]
}
下面是我的代码

在feedback.js中

static async getFeedbackStats(opts) {
    assert.object(opts, 'opts')
    assert.func(opts.mysql_db, 'opts.mysql_db')

    const { mysql_db } = opts

    const result = mysql_db.select('type', 'status', mysql_db.raw('count(status)'))
        .from('user_feedbacks')
        .groupBy('status', 'type')

    return result
  }
const assert = require('assert-plus')
const Utils = require('../common/repos/feedbacks')
const Auth = require('../common/auth')
const Logger = require('../common/debug_logger')

async function handler(event, ctx, opts) {
    Logger.info('Feedback stats handler has been invoked: %j', event)

    const auth = await Auth.authenticate(event)

    if (!auth.success){
        return { status : 'failed', code : 401}
    }

    assert('params' in auth, 'auth.params')
    assert('auth_ctx' in auth, 'auth.auth_ctx')
    assert('user_id' in auth.auth_ctx, 'auth.auth_ctx.user_id')

    Logger.info('Feedback stats handler Auth.Params: %j', auth.params)

    const result = await Utils.getFeedbackStats(opts)

    return { status: 'success', code: 200, data: result }

}

module.exports = { handler }
handler.js中的

static async getFeedbackStats(opts) {
    assert.object(opts, 'opts')
    assert.func(opts.mysql_db, 'opts.mysql_db')

    const { mysql_db } = opts

    const result = mysql_db.select('type', 'status', mysql_db.raw('count(status)'))
        .from('user_feedbacks')
        .groupBy('status', 'type')

    return result
  }
const assert = require('assert-plus')
const Utils = require('../common/repos/feedbacks')
const Auth = require('../common/auth')
const Logger = require('../common/debug_logger')

async function handler(event, ctx, opts) {
    Logger.info('Feedback stats handler has been invoked: %j', event)

    const auth = await Auth.authenticate(event)

    if (!auth.success){
        return { status : 'failed', code : 401}
    }

    assert('params' in auth, 'auth.params')
    assert('auth_ctx' in auth, 'auth.auth_ctx')
    assert('user_id' in auth.auth_ctx, 'auth.auth_ctx.user_id')

    Logger.info('Feedback stats handler Auth.Params: %j', auth.params)

    const result = await Utils.getFeedbackStats(opts)

    return { status: 'success', code: 200, data: result }

}

module.exports = { handler }
上述代码返回低于输出[输出i返回]

{
  "status": "success",
  "code": 200,
  "data": {
    "1"(Type): {
      "0" (status): 20, (total)
      "1": 19,
      "2": 28
    },
    "2": {
      "0": 20,
      "1": 19,
      "2": 28
    },
    "3": {
      "0": 20,
      "1": 19,
      "2": 28
    },
    "4": {
      "0": 20,
      "1": 19,
      "2": 28
    }
  }
}
    {
    "status":"success",
    "code":200,
    "data":[
        {
          "type":1,
          "status":0,
          "count(status)":2
        },
        {
          "type":2,
          "status":0,
          "count(status)":1
        },
        {
          "type":1,
          "status":1,
          "count(status)":1
        },
        {
          "type":1,
          "status":2,
          "count(status)":1
        }
          ]
}

任何人都可以帮助我获得我提到的上述输出?

因此在handler中您可以更改:

const result = await Utils.getFeedbackStats(opts);

return { status: 'success', code: 200, data: result }

现在
processedResult
获取数据并返回数据。这是一个非常简单的问题 一种只对数据进行洗牌的算法。理解比理解容易得多 异步/等待

constprocessresult=({状态、代码、数据})=>{
//这可能比编程时间短
常量objResult={
"1": { "0": 0, "1": 0, "2": 0 },
"2": { "0": 0, "1": 0, "2": 0 },
"3": { "0": 0, "1": 0, "2": 0 },
"4": { "0": 0, "1": 0, "2": 0 },
};
//增加默认回报
返回{
地位
代码,
data:data.reduce((acc,{type,status,count})=>{
返回{…acc[type]:{…acc[type],[status]:count};
},objResult)
};
};
//试验
常量示例={
“状态”:“成功”,
“代码”:200,
“数据”:[
{
“类型”:1,
“状态”:0,
“计数”:2
},
{
“类型”:2,
“状态”:0,
“计数”:1
},
{
“类型”:1,
“地位”:1,
“计数”:1
},
{
“类型”:1,
“地位”:2,
“计数”:1
}
]
};

log(processResult(示例))
不应该
Utils.getFeedbackStats
返回承诺吗?另外,建议将异步方法包装在
try catch
块中。@EmmanuelGabriel Utils.getFeedbackStats返回我前面提到的输出,但我不确定如何获得我在顶部提到的所需输出。我的意思是,您应该显式返回一个承诺,如
return awit mysql\u db.select('type','status',mysql\u db.raw('count)(status);(status);(user_feedbacks);(user_feedbacks);(user_feedbacks);(user_feedbacks);.groupBy('status','type')
另外,你能给我显示调用get
Utils.getFeedbackStats的确切输出吗?@EmmanuelGabriel这是我得到的输出-{“status”:“success”,“code”:200,“data”:[{“type”:1,“status”:0,“count(status)”:2},{“type”:1,“status”:1,“count(status)”,{“type”:1,“状态”:2,“计数(状态)”:1},{“类型”:2,“状态”:0,“计数(状态)”:1}]}@EmmanuelGabriel这是我想要的格式—{“状态”:“成功”,“代码”:200,“数据”:{“1”:{“0”:“0”:20,“1”:19,“2”:28},{“0”:20,“1”:19,“2”:28},“3”:{“0”:20,“1”:19,“2”: 28     },     "4": {       "0": 20,       "1": 19,       "2": 28     }   } }