返回promise在路由中解析值node.js / express

时间:2017-09-07 15:35:09

标签: javascript node.js promise

我正在创建一个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”路径请求的响应返回?

1 个答案:

答案 0 :(得分:-2)

这是因为您正在尝试获取未定义对象的“然后”属性。

试试这个:

getTopics(tweetStr){
      return this.meaning.topics_extraction({
        lang: 'en',
        txt: tweetStr,
        tt: 'eco'
      }).then(function(res) {
        return (res.body);
      });
  }