Javascript 返回路由node.js/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);

我正在创建一个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);
  });
})
这里是有意义的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
应返回承诺,但不会返回任何内容。抱歉,我的错误,请检查承诺文档。看来你得回报一个新的承诺。看看这个。