gpt4 book ai didi

json - Nodejs foreach 中的回调 hell

转载 作者:太空宇宙 更新时间:2023-11-04 03:08:53 24 4
gpt4 key购买 nike

我有 field 数据。我想知道现在这里的人们如何压缩 field 数据并将数据计数为 json。此代码可以运行,但 json 结果为 null。

var _venues = _.map(venues.response.venues, function (v) {
Checkin.where({
'venuesUniqeId': v.Id,
'createdDate': {
$gte: new Date().getHours() - 2
}
})
.count(function (err, hereNow) {

return new Venue({
'uniqeId': v.id,
'name': v.name,
'count': hereNow
});
});
});
return r.json(_venues);

最佳答案

首先,很好地理解 map 函数是什么:Map 接受一组输入并将它们一对一地转换为不同的东西。在这种情况下,您的 _venues 数组为空,因为您没有在 _.map 回调中返回任何内容。

我一直解决此类问题的方法是使用像 bluebirdQ 这样的 Promise 库,并利用 .all 方法。在这种情况下,您的 _.map 不会输出实际的 _venues ,而是输出 _venuePromises ,您稍后执行并等待一系列 field 。换句话说,由于 mongoose 的异步特性,Checkin.where 的输出不是地点的集合,而是 promise 的集合。

免责声明:我不使用 mongoose,所以我不确定它如何与 Q 或 Bluebird 集成。

var Promise = require('bluebird');

var _venuePromises = _.map(venues.response.venues, function (v) {
return Checkin.where({
'venuesUniqeId': v.Id,
'createdDate': {
$gte: new Date().getHours() - 2
}
})
.count(function (err, hereNow) {

return new Venue({
'uniqeId': v.id,
'name': v.name,
'count': hereNow
});
});
});

Promise.all(_venuePromises).then(function (actualVenues) {
return r.json(actualVenues);
});

关于json - Nodejs foreach 中的回调 hell ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30629470/

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