gpt4 book ai didi

带有 Sails 的 JavaScript Ember

转载 作者:行者123 更新时间:2023-11-30 14:56:51 33 4
gpt4 key购买 nike

我正在使用 EmberJS 和 SailsJS。现在我被要求制作一个统计页面并处理 SailsJS 中的过滤过程。

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

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

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

这是我的代码:

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

PS:如果有任何其他方法可以完成此任务,请告诉我,我是初学者。

最佳答案

.then 回调中的departments 对象是一个部门对象数组。要获得一个 ID,您需要执行类似 departments[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...
});
});

像这样创建一个单独的对象可能不是您想要做的,但是像这样的东西应该可以满足您的任何目的。请注意,我编写的代码不需要找到所有的部门对象,但无论您做什么,都可能...

如果您对效率感兴趣,那么一旦您开始使用它,您就可以看看是否有某种方法可以查询数据库以直接获取您想要的计数,而不是这种代码内处理。但我会从像这样简单的事情开始。


编辑:

听起来你可以使用类似的东西:

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

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

关于带有 Sails 的 JavaScript Ember,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47120132/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com