首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Google Cloud Functions res/res with Promise by node-fetch

Google Cloud Functions res/res with Promise by node-fetch
EN

Stack Overflow用户
提问于 2020-04-23 04:12:42
回答 1查看 51关注 0票数 0

我完全是Javascript的新手,并试图在我使用的两个服务之间架起一座桥梁。目标只是获取主体或请求,对另一个服务执行promise api调用,以使用该api调用的主体进行响应。我已经能够获取请求的主体并将其发送到服务,但我在接收该响应并将该响应的主体作为函数的响应时遇到了问题。请帮帮我。谢谢。

代码语言:javascript
复制
var moment = require('moment');
var CryptoJS = require("crypto-js");
const fetch = require('node-fetch');

var unixtime = moment().unix();
var apiUser = process.env.apiUser;
var secret = process.env.apiKey;
var url = process.env.url;

exports.test = (req, res) => {
  var message = req.body;
  message = JSON.stringify(message);
  var body = "{\n    \"ops\": [{\n        \"conv_id\": \"679690\",\n        \"type\": \"create\",\n        \"obj\": \"task\",\n        \"data\": message\n    }]\n}\n"
  body = body.replace(/message/ig, message);
  var signature = CryptoJS.enc.Hex.stringify(CryptoJS.SHA1(unixtime + secret + body + secret));

  function request1() {
    return new Promise((resolve, reject) => {

      var options = fetch(url+apiUser+'/'+unixtime+'/'+signature, {
          method: 'post',
          body: body,
          headers: { 'Content-Type': 'application/json' },
      });

      options.then(res => {
          var result = res.json;
          console.log(result);
          resolve(result);
        })
        .catch(() => { // if .then fails
          console.log('Promise rejected');
          let rejectMessage = 'Sorry, an error occurred.';
          reject(rejectMessage); // Promise rejected
        });
    });
  }

  request1();
};
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-04-23 04:30:23

您可以很容易地检索result对象,因为函数request1返回一个解析该对象的承诺,所以这应该是可行的:

代码语言:javascript
复制
request1().then((resultObject)=>{
    //resultObject === result
    return res.send(resultObject);
});

此外,res.json()会返回一个promise,所以您应该这样做:

代码语言:javascript
复制
options.then(res => res.json()).then(result => {
          console.log(result);
          resolve(result);
        })
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61374298

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档