【发布时间】:2017-11-19 13:07:22
【问题描述】:
你好吗? 我对 mongoose 和 mongoDB 很陌生,但在进行基本查询时遇到了麻烦。所以,我有这个代码:
function addVoterToElection(req, res) {
let query = Election.findOne({ 'name' : req.body.electionName });
let result = query.exec((err, election) => {
if(err) return err;
return res.send(election);
});
}
按预期工作,因为 t 将我需要的选举发送回请求者:
{
"_id": "594408b7c94fcdc009000001",
"votechain": "594408b7c94fcdc009000002",
"name": "eleicaoteste",
"electionID": 12,
"__v": 0,
"voters": null
}
但问题是我需要将该对象用于其他目的,而且我无法从 query.exec 中“提取”它。如果我这样做了
let query = Election.findOne({ 'name' : req.body.electionName });
let result = query.exec((err, election) => {
if(err) return err;
return (election);
});
res.json(result);
我得到的只是
{
"emitted": {},
"ended": false,
"_events": {},
"_eventsCount": 2
}
因此我无法将它用于下一个依赖于让这个选举对象工作的查询。我能做些什么?我知道这是一个相当基本的问题,但我不确定我是否理解整个承诺的工作原理。 非常感谢!
【问题讨论】:
-
虽然接受的答案是正确的,但我发现使用“异步”模块,您可以达到此答案中所述的预期结果:stackoverflow.com/a/5165153/4148031
标签: javascript node.js mongodb express mongoose