如何解决无法操纵猫鼬查询结果-答应未定义
我是猫鼬和诺言的新手,所以可能是我不清楚的东西,这是东西:
我正在编写我的应用程序(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}东西。 (例如,您看到的所有//不起作用的地方-可能还有其他地方) 因此,我只能将数据发送回去,而无法进行任何操作。
我试图保存并访问诺言,但没有用。
我在做什么错了?
谢谢! :)
解决方法
您可以尝试以下方法以更好地理解承诺
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) }
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。