Javascript 返回路由node.js/express中的承诺解析值
我正在创建一个MEAN-stack webapp,我在Node/Express端的承诺方面遇到了问题 我有我的路由器文件,路由设置如下:Javascript 返回路由node.js/express中的承诺解析值,javascript,node.js,promise,Javascript,Node.js,Promise,我正在创建一个MEAN-stack webapp,我在Node/Express端的承诺方面遇到了问题 我有我的路由器文件,路由设置如下: router.get('/tweets', (req, res) => { let mc = new MeaningCloudModel(); let tweets = "randomstring123"; mc.getTopics(tweets) .then((topics)=> { res.send(topics);
router.get('/tweets', (req, res) => {
let mc = new MeaningCloudModel();
let tweets = "randomstring123";
mc.getTopics(tweets)
.then((topics)=> {
res.send(topics);
});
})
这里是有意义的CloudModel代码:
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;
当我导航到该路线时,会出现控制台错误:
(节点:8916)未处理的PromisejectionWarning:未处理的承诺拒绝(拒绝id:2):TypeError:无法读取未定义的属性“then”
我知道我没有正确地设定我的承诺,但我不知道如何纠正它
路由器在MeaningCloudModel上调用getTopics方法,MeaningCloudModel本身正在从MeaningCloud依赖项调用一个方法,该依赖项返回一个承诺。如何将该承诺的输出作为对“/tweets”路由请求的响应返回?这是因为您试图获取未定义对象的“then”属性 试试这个:
getTopics(tweetStr){
返回this.meansion.topics\u提取({
朗:"嗯",,
txt:tweetStr,
tt:‘生态’
}).然后(功能(res){
返回(res.body);
});
}
该代码中您假设返回承诺的内容不会返回承诺。请在getTopics
函数中添加return
语句。getTopics
应返回承诺,但不会返回任何内容。抱歉,我的错误,请检查承诺文档。看来你得回报一个新的承诺。看看这个。