Javascript从数据库中计算每日元素数

Javascript从数据库中计算每日元素数,javascript,database,count,Javascript,Database,Count,我有一个网站,它对数据库执行一些查询,然后创建表。现在,我需要构建一个数组,其中包含每天出现的次数(项目)。为了做到这一点,我现在尝试将查询结果json保存到一个变量中,然后解析该变量,但这不起作用。我该怎么做?这是我的密码: var someVar = []; connection.query("https://blahblabblah?param1=val&param2=val2", function(err, rows){ if(err) { th

我有一个网站,它对数据库执行一些查询,然后创建表。现在,我需要构建一个数组,其中包含每天出现的次数(项目)。为了做到这一点,我现在尝试将查询结果json保存到一个变量中,然后解析该变量,但这不起作用。我该怎么做?这是我的密码:

var someVar = [];

connection.query("https://blahblabblah?param1=val&param2=val2", function(err, rows){
  if(err) {
    throw err;
  } else {
    setValue(rows);
  }
});

function setValue(value) {
  someVar = value;
  console.log(someVar);
}

dayCounts = someVar.reduce(function (result, order) {
    var day = moment(someVar.CreationDate).format("YYYY-MM-DD");
    if (!result[day]) {
        result[day] = 0;
    }
    result[day]++;
    return result;
}, {});

console.log(dayCounts);
由此产生的日数与此类似:

{[2020-10-01, 160], //[day, sum of elements found in that day]
 [2020-10-02, 69],
[2020-10-03, 110],
[...]}
现在我遇到问题,无法连接并执行该查询。 我怎样才能达到这个结果?多谢各位

编辑: 我返回的变量是:

[{Id, Var1, Var2, CreationDate},
{1, 123, Var2, 2020-01-01},
{2, 1234, Var2, 2020-01-01},
{3, 12345, Var2, 2020-01-01},
{4, 1234, Var2, 2020-01-02},
{5, 321, Var2, 2020-01-02},
{6, 3214, Var2, 2020-01-02},
{7, 5432, Var2, 2020-01-03},
{8, 5431, Var2, 2020-01-03}]

以下是计算“someVar”中每天发生次数的代码:

const someVar=[
{Id:1,Var1:123,Var2:'',CreationDate:'2020-01-01'},
{Id:2,Var1:1234,Var2:'',CreationDate:'2020-01-01'},
{Id:3,Var1:1235,Var2:'',CreationDate:'2020-01-01'},
{Id:4,Var1:1236,Var2:'',CreationDate:'2020-01-02'},
{Id:5,Var1:321,Var2:'',CreationDate:'2020-01-02'},
{Id:6,Var1:13,Var2:'',CreationDate:'2020-01-02'},
{Id:7,Var1:17,Var2:'',CreationDate:'2020-01-03'},
{Id:8,Var1:138,Var2:'',CreationDate:'2020-01-03'},
];
const result=someVar.reduce(函数(累加器、currentValue){
//第一个参数是Accumulator,第二个参数是someVar中的元素
//我们将累加器的初始状态(空对象)设置为减少方法的第三个参数
const day=时刻(currentValue.CreationDate).format('yyyyy-MM-DD');
//检查此处是否有未定义,因为计数为零的天数也将计算为false
if(累加器[日]==未定义){
累加器[天]=1;
}否则{
累加器[天]+;
}
回流蓄能器;
},{}/*初始累加器状态*/);
我认为问题在于您一直在reduce块中引用“someVar” 如果(!result[days])始终为0,则当您必须在
中计算天数时,第一次遇到一天,它将用0初始化累加器,下次当您有相同日期的条目时,它将计算为false,因为与该天关联的值为0


要了解更多关于reduce签名的信息:

您能详细介绍一下someVar结构吗?您正在对其进行迭代,同时从中读取属性CreationDate。更新了我的问题谢谢!现在我的数组的形式是
{2020-10-15:23 2020-10-16:21 2020-10-17:24 2020-10-18:26 2020-10-19:69}
如何选择日期或数字?@thranduil90有多种方法,例如可以使用
Object.keys()
提取日期。