我有一个 Mongoose 查询,可以找到一堆 field ,然后进行谷歌查询来查找到这些 field 的驾驶距离。 google 函数位于 Promise 中,在 .then 中我必须执行 res.jsonvenues.emissed.fulfill[0]
,否则 json 会被包裹起来
"emitter": {
"domain": null,
"_events": {
"reject": [
null,
null
]
},
"_eventsCount": 2
},
"emitted": {
"fulfill": [
[...
]
]
]
},
"ended": true
}
有什么方法可以避免从 promise 中返回所有内容,以便我可以只执行 res.json 或者这是解决此问题的最佳方法?
这是相关代码(coffeescript):
Venue.find {}
.lean()
.then (dbResponse) ->
venues = dbResponse
if req.param('hotelId')
hotelId = req.param('hotelId')
distancePromise = ()->
venues = findDistances(hotelId, venues, req)
Promise.resolve distancePromise()
.then ()->
res.json venues.emitted.fulfill[0]
else
res.json venues
.catch (err) ->
res.status(400).send(err)
最佳答案
当您调用返回 Promise 的函数时,您应该获取 Promise 返回的值,然后发送该值。
Venue.find {}
.lean()
.then (dbResponse) ->
venues = dbResponse
if req.param('hotelId')
hotelId = req.param('hotelId')
findDistances(hotelId, venues, req)
.then (result)->
res.json result
.catch (error) ->
res.status(404).send(err)
else
res.json venues
.catch (err) ->
res.status(400).send(err)
关于javascript - 如何从 Promise 中的函数返回新的 json,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40620934/