Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/410.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_Node.js_Mongoose - Fatal编程技术网

Javascript 统计状态记录(批准、待定、拒绝)并将值返回到各自的变量中

Javascript 统计状态记录(批准、待定、拒绝)并将值返回到各自的变量中,javascript,node.js,mongoose,Javascript,Node.js,Mongoose,我正在尝试统计mongoDB中的文档(使用mongoose),其中记录的状态为pending、approved和rejected。所以,我基本上是想得到一个结果,在这个结果中,我可以显示每一个的计数,并在我的视图中显示它 我想把这些值保存在变量中,我可以在不同的地方使用,比如: const pending = ..... const approved = .... const rejected = ..... 我曾尝试使用聚合函数并运行一个循环,该循环获取我所需的所有数据,但我不知道如何将数据

我正在尝试统计mongoDB中的文档(使用mongoose),其中记录的状态为pending、approved和rejected。所以,我基本上是想得到一个结果,在这个结果中,我可以显示每一个的计数,并在我的视图中显示它

我想把这些值保存在变量中,我可以在不同的地方使用,比如:

const pending = .....
const approved = ....
const rejected = .....
我曾尝试使用聚合函数并运行一个循环,该循环获取我所需的所有数据,但我不知道如何将数据实际放入上述三个变量中

   Product.aggregate([
        { $group: { _id: { status: "$status" }, totalStatus: { $sum: 1 } } }

    ])
上面的代码还给了我这个(我还没有拒绝的值)

然后我运行了一个循环并使用了分解:

.then(status => {
    for (const current of status) {
        const [status, total] = [current._id.status, current.totalStatus];
        console.log(status + ': ' + total);
    }
    next();
})
这给了我:

pending: 15
approved: 27

但这仍然不是我真正想要的。我需要将这些值放入它们自己的变量中。我怎样才能做到这一点?

您通过聚合获得了状态和文档计数。请尝试将这些值放入相应的变量中:

let pending, approved, rejected;

switch (status.toLowerCase()) {
 case 'pending': pending = total;
        break;
 case 'approved' : approved = total;
        break;
 case 'rejected': rejected = total;
        break;
}

将开关包括在循环中。

通过聚合获得状态和文档计数。请尝试将这些值放入相应的变量中:

let pending, approved, rejected;

switch (status.toLowerCase()) {
 case 'pending': pending = total;
        break;
 case 'approved' : approved = total;
        break;
 case 'rejected': rejected = total;
        break;
}

在循环中包含开关。

这似乎有效!这样做是正确的,还是数据库应该按照我需要的方式进行工作并提供结果?如果我们可以使用mongoose本身来实现这一点,那就太好了。但我不确定这是否可能!可以我会等着看,如果我在这里得到更多的答案,看看是否可以使用猫鼬。这似乎是工作!这样做是正确的,还是数据库应该按照我需要的方式进行工作并提供结果?如果我们可以使用mongoose本身来实现这一点,那就太好了。但我不确定这是否可能!可以我将等待,看看我是否在这里得到更多的答案,看看是否可以使用猫鼬。