我正在创建一个MEAN堆栈webapp,我在Node / Express端遇到了promises问题。
我有我的路由器文件,路由设置如下:
router.get('/tweets', (req, res) => {
let mc = new MeaningCloudModel();
let tweets = "randomstring123";
mc.getTopics(tweets)
.then((topics)=> {
res.send(topics);
});
})
MeaningCloudModel代码在这里:
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:未处理的promise拒绝(拒绝id:2):TypeError:无法读取未定义的属性'then'
我知道我没有正确承诺,但我不确定如何解决。
路由器调用MeaningCloudModel上的getTopics方法,该方法本身从意义 - 云依赖关系中调用方法,该方法返回一个promise。如何将该承诺的输出作为对“/ tweets”路径请求的响应返回?
答案 0 :(得分:-2)
这是因为您正在尝试获取未定义对象的“然后”属性。
试试这个:
getTopics(tweetStr){
return this.meaning.topics_extraction({
lang: 'en',
txt: tweetStr,
tt: 'eco'
}).then(function(res) {
return (res.body);
});
}