无法操作猫鼬查询结果 - 承诺未定义



我是猫鼬和承诺的新手,所以这可能是我不清楚的事情,事情是:

我正在编写我的应用程序(MEAN(,在那里我的控制器中堆叠了一些web服务来检索和获取东西。我举个例子。

exports.allowanceCheck = (req, res) => {
let payload = req.body.excelparam
let day = getDate(payload[0].data_accesso,1)
var dummyVar
return AccessList.aggregate([
{'$match' : {'id': day}},
{'$unwind' : '$employees'},
{
$group: {
_id: '$id',
count: { $sum: 1 }
}
}
])
.exec()
.then((list) => {
console.log(list) //not working
res.json(list)
dummyVar = list
})
.catch((err) => {
res.status(500).send(err)

})
}
console.log(list) //not working
console.log(dummyVar) //not working

web服务运行良好,客户端收到响应JSON:

[
{
"_id": "200830",
"count": 2
}
]

我现在遇到的问题是,如果我想用这个";列表";JSON数据,我在尝试操作{undefined}内容时出错。(例如,你看到的任何地方//都不工作,可能还有其他任何地方(所以我只能把数据发回,我不能操纵任何东西。

我试图保存承诺并访问它,但没有成功。

我做错了什么?

谢谢!:(

您可以尝试以下方法来更好地理解promise

exports.allowanceCheck = (req, res) => {
let payload = req.body.excelparam
let day = getDate(payload[0].data_accesso, 1)
functionAllowanceCheck(day).then((listResponse) => {
console.log(listResponse) //working
res.json(listResponse)
}).catch((listError) => {
res.status(500).send(listError)
})
}
const functionAllowanceCheck = (day) => {
return new Promise((resolve, reject) => {
AccessList.aggregate([
{ '$match': { 'id': day } },
{ '$unwind': '$employees' },
{
$group: {
_id: '$id',
count: { $sum: 1 }
}
}
]).exec((err, list) => {
if (err) {
reject(err)
} else {
resolve(list)
}
})
})
}

@vishalpankhaniya不幸的是,它没有:(在块外读取它是不可能的。我试着在块内部和之前创建一个var,但它没有改变(我们不应该在allowanceCheck上工作,对吧?(

exports.allowanceCheck = (req, res) => { 
... 
var lista = JSON.parse(JSON.stringify(listResponse)) 
... 
}).catch((listError) => { 
res.status(500).send(listError) 
}) 
console.log(lista) }

最新更新