Javascript 如何将聚合结果保存到外部变量中?
首先,我正在创建一个带有日历日期选择器的应用程序。您可以选择所需日期的约会。从那以后,一切都很顺利。现在我需要增加每天4次约会的限制。。我正在mongoDB中使用node/express。我使用的是aggregate,它返回日期在数据库中的次数,然后我想将结果保存到一个外部变量中以添加条件。这是我目前的代码:Javascript 如何将聚合结果保存到外部变量中?,javascript,node.js,mongodb,express,Javascript,Node.js,Mongodb,Express,首先,我正在创建一个带有日历日期选择器的应用程序。您可以选择所需日期的约会。从那以后,一切都很顺利。现在我需要增加每天4次约会的限制。。我正在mongoDB中使用node/express。我使用的是aggregate,它返回日期在数据库中的次数,然后我想将结果保存到一个外部变量中以添加条件。这是我目前的代码: var count; var limit; Date.aggregate( [ { $match: {
var count;
var limit;
Date.aggregate(
[
{
$match:
{
"date": "2020-11-20"
}
},
{
$group:
{
_id: null,
currentOrder: {
$sum: 1
}
}
}
], (err, res) => {
count = res;
if (count === []) {
console.log('empty')
} else {
console.log("This is count : ", count[0].currentOrder)
limit = count[0].currentOrder
}
}
)
console.log('This is limit: ', limit)
console.log('This is count outside of aggregate: ', count)
if (limit === 4) {
try {
const savedDate = await disabledDate.save();
res.json(savedDate)
} catch (err) {
res.json({ message: err })
}
}
因此,在控制台中,我得到:这是限制:未定义
这是计数:2
这是聚合之外的计数:未定义
所以基本上,我只想使用“计数”结果,使用一个条件来执行某个代码,该代码将禁用该日期。。有什么帮助吗?我认为应该用异步函数包装聚合,因为“聚合”似乎是异步的
(async function() {
await Date.aggregate(
[
{
$match:
{
"date": "2020-11-20"
}
},
{
$group:
{
_id: null,
currentOrder: {
$sum: 1
}
}
}
], (err, res) => {
count = res;
if (count === []) {
console.log('empty')
} else {
console.log("This is count : ", count[0].currentOrder)
limit = count[0].currentOrder
}
}
)
})();
我终于明白了!如果有人有同样的问题,并试图实现我正在做的事情,这就是我所做的:
var count;
var limit;
Date.aggregate(
[
{
$match:
{
"date": req.body.date.slice(0, 10)
}
},
{
$group:
{
_id: null,
currentOrder: {
$sum: 1
}
}
}
], (err, res) => {
count = res;
if (count === []) {
console.log('empty')
} else {
setDate(count[0].currentOrder)
console.log("This is count : ", count[0].currentOrder)
limit = count[0].currentOrder
}
}
)
async function setDate(limit) {
if (limit >= 4) {
try {
const savedDate = await disabledDate.save();
res.json(savedDate)
} catch (err) {
res.json({ message: err })
}
}
}
我创建了一个异步函数来处理更改,然后我在回调中调用了它,它成功了 谢谢你的帮助!它不起作用,但你让我找到了正确的答案:)