【发布时间】:2017-09-08 00:19:04
【问题描述】:
我正在创建一个 MEAN 堆栈 web 应用程序,但我在 Node / Express 方面遇到了 Promise 问题。
我有我的路由器文件,路由设置如下:
router.get('/tweets', (req, res) => {
let mc = new MeaningCloudModel();
let tweets = "randomstring123";
mc.getTopics(tweets)
.then((topics)=> {
res.send(topics);
});
})
WeightingCloudModel 代码在这里:
let MeaningCloud = require('meaning-cloud');
class MeaningCloudModel{
constructor() {
this.meaning = MeaningCloud({
//config defined here
}
});
}
getTopics(tweetStr){
this.meaning.topics_extraction({
lang: 'en',
txt: tweetStr,
tt: 'eco'
}).then(function(res) {
return (res.body);
});
}
}
module.exports = MeaningCloudModel;
当我导航到该路线时,我收到控制台错误:
(node:8916) UnhandledPromiseRejectionWarning: UnhandledPromiseRejectionWarning: Unhandled Promise Rejection (rejection id: 2): TypeError: Cannot read property 'then' of undefined
我知道我没有正确设置我的承诺,但我不知道如何解决它。
路由器调用 MeaningCloudModel 上的 getTopics 方法,该方法本身正在调用含义云依赖项中的方法,该依赖项返回一个承诺。如何从该承诺返回输出作为对“/tweets”路由请求的响应?
【问题讨论】:
-
您认为返回承诺的代码中的某些内容不会返回承诺。
-
在
getTopics函数中添加return语句。 -
getTopics应该返回一个承诺,但它什么也不返回。
标签: javascript node.js promise