Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ember.js/4.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 风帆余烬_Javascript_Ember.js_Sails.js_Sails Mongo - Fatal编程技术网

Javascript 风帆余烬

Javascript 风帆余烬,javascript,ember.js,sails.js,sails-mongo,Javascript,Ember.js,Sails.js,Sails Mongo,我和EmberJS和SailsJS一起工作。现在我被要求制作一个统计页面,并在SailsJS中处理过滤过程 我有一个部门模型和另一个请求模型,这些模型之间的关系是(请求属于部门)。由于某种原因,我的经理阻止我建立(很多)关系 现在我要做的是循环遍历所有部门并将它们存储在新对象中,在该循环中,我要使用Request.count({where:{department:department.id}})遍历所有请求,并获取对象的departments数组中每个部门的请求数 我试着按照我解释的那样做,但问

我和EmberJS和SailsJS一起工作。现在我被要求制作一个统计页面,并在SailsJS中处理过滤过程

我有一个部门模型和另一个请求模型,这些模型之间的关系是(请求属于部门)。由于某种原因,我的经理阻止我建立(很多)关系

现在我要做的是循环遍历所有部门并将它们存储在新对象中,在该循环中,我要使用
Request.count({where:{department:department.id}})
遍历所有请求,并获取对象的departments数组中每个部门的请求数

我试着按照我解释的那样做,但问题是当我在请求循环中记录部门时,它会给出我想象的结果,但当我添加(.id)时,它会显示“未定义”

这是我的密码:

Department.find().then((departments) => {
    report.departments = departments;
    Request.count({ department : departments.id}).exec(function countMe(err, count) {
       console.log(count);
    })
})

PS:如果这个任务还有其他方法,请告诉我,我是个初学者。

你的
部门
中的
对象。那么
回调是一个部门对象数组。要获取id,您需要执行类似于
部门[0].id的操作

我可能不建议使用
.count
,因为这意味着每个部门都要单独访问数据库。Sails waterline可能有一些方法可以让您统计按部门id分组的请求,但为了获得一个蒸汽压路机工作示例,我首先要获取所有内容并在代码中进行一些处理:

Department.find().then((departments) => {
    Request.find().then((requests) => {
        var requestCounts = {}; // we'll store the counts in this object
        for (var idx = 0; idx < requests.length; idx++) {
            if (!requestCounts[requests[idx].department]) {
                requestCounts[requests[idx].department] = 0;
            }
            requestCounts[requests[idx].department]++;
        }
        // use requestCounts...
    });
});

但我发现关于这是否适用于sails mongo的报告相互矛盾,因此将此作为“也许这会起作用”的建议。

我假设请求中有一个与部门相关的ObjectId属性部门

快速解决方法是纠正以下问题:

  • 第二行没有意义,因为没有使用报告
  • 让departmentIds=u.map(departments,'id')

并在计数查询对象中使用DepartmentID

但是,您无论如何都要在初始查询中查找所有部门,我假设您无论如何都要计算所有请求。只有在查询对象限制返回的部门数量的情况下,首先查找部门才有意义

此外,如果您知道有问题的部门ID,则可能不需要查询它们。否则,您可能会使用投影只返回DepartmentID,而不是所有部门的所有属性

Request.find().groupBy('department').sum('count').exec(function (err, results){
    console.log(results);
});