从Node JS中的Google Cloud Translate API返回值

时间:2017-01-20 01:29:44

标签: javascript node.js google-cloud-platform google-translate

我正在使用NodeJS玩Google Cloud Translate API。我可以在console.log中从promise返回的值。但我不确定如何将该值传递到像EJS这样的模板文件中。屏幕上显示的所有内容都是[object Promise]。 这是我的代码:

data.ix[data.B.notnull(), 'A'] = data.ix[data.B.notnull(), 'B']

它控制台。记录正常,但是当我使用EJS时,我没有得到相同的值。

我该如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

首先解决承诺而不是按原样传递承诺

问题在于您实际上并未将已翻译的字符串传递给模板,而是将返回转换的promise对象。这就是你得到[object Promise]的原因。

在您的代码中,已翻译的字符串将分配给回调函数中的results[0]。这意味着您需要将该变量传递给渲染器,但由于它仅在您的回调中可用,因此您需要确保它首先完成。

最简单的方法是在.then()的回调中移动任何使用它的代码,然后从那里继续。

// Translates some text into Russian
translateClient.translate(text, target)
  .then((results) => {

    app.get('/', function(req, res){
      res.render('index', { translation: results[0] });
    });

    app.listen(8080, function() {
      console.log('App Started!');
    });

  });

免责声明:这是未经测试的3AM背面信封代码。