Javascript 为什么节点样式错误第一次回调在回调后返回undefined
当我试图执行错误回调功能时,下面的代码返回undefined。我不明白为什么在控制台日志输出完整查询时json没有返回 下面是将json生成到日志中的被调用函数Javascript 为什么节点样式错误第一次回调在回调后返回undefined,javascript,node.js,express,Javascript,Node.js,Express,当我试图执行错误回调功能时,下面的代码返回undefined。我不明白为什么在控制台日志输出完整查询时json没有返回 下面是将json生成到日志中的被调用函数 exports.getThem = (req) => { var addy = req.body.email; Picks.findOne({ 'email' : addy }, (err, theResults) => { if (err) { return (
exports.getThem = (req) => {
var addy = req.body.email;
Picks.findOne({ 'email' : addy }, (err, theResults) => {
if (err) {
return ({ 'msg': err });
}
console.log("made the query " + JSON.stringify(theResults));
return theResults;
});
};
上面,结果打印“makethequery”和一个完整的JSON字符串
调用代码将执行以下JSON并将其返回给Postman,而不包含结果JSON
console.log“log this”从不执行,第二个日志在“undefined”之后打印
{
"token" : someCrazyLookingToken
}
为什么??回调中是否存在我不期待的时间问题?这不一定是时间问题,但可能是您对回调工作方式的误解,尤其是在其范围内。在代码中,结果永远不会有值 试着像这样设置它,阅读承诺和回调以更好地理解这两个方面
exports.loginUser = async (req, res) => {
try {
const theResults = await new Promise((resolve, reject) => {
Picks.getPicks(req, (err, thePicks) => {
if (err) {
return reject(err);
}
return resolve(thePicks);
})
});
return res.status(200).json({picks: theResults, token: createToken(user)});
} catch (err) {
//handle err
}
}
这回答了你的问题吗?
exports.loginUser = async (req, res) => {
try {
const theResults = await new Promise((resolve, reject) => {
Picks.getPicks(req, (err, thePicks) => {
if (err) {
return reject(err);
}
return resolve(thePicks);
})
});
return res.status(200).json({picks: theResults, token: createToken(user)});
} catch (err) {
//handle err
}
}