【问题标题】:Node.js in Parse Server, empty values?解析服务器中的 Node.js,空值?
【发布时间】:2021-07-11 04:35:06
【问题描述】:

我在使用 Parse-server 的 Back4App 中使用 Node.js。我正在尝试从 openweathermap.org 获取天气预报。但是我得到一个空的返回值?我不明白为什么? 当在前端与颤振一起使用时,它可以在相同的 url 上完美运行。

var _weather;

Parse.Cloud.define("WD", (request) => {

var http = require('http');

var options = {
  hostname: 'api.openweathermap.org',
  path:  '/data/2.5/forecast?q=Malaga&units=metric&appid=mykey'   
 };

callback = function(response) {
  var str = '';

response.on('data', function (chunk) {
    str += chunk;

_weather = JSON.parse(str);
 });  
}
http.request(options, callback).end();
return _weather;

});

【问题讨论】:

    标签: node.js parse-server back4app


    【解决方案1】:

    您不是在等待请求结束,而是函数在它发生之前返回。尝试这样的事情(考虑到您使用的是 >3 解析版本):

    const http = require('http');
    
    Parse.Cloud.define("WD", async (request) => {
    let _weather;
    
    const options = {
      hostname: 'api.openweathermap.org',
      path:  '/data/2.5/forecast?q=Malaga&units=metric&appid=mykey'   
     };
    
    await new Promise(resolve => {
    const callback = function(response) {
      let str = '';
    
    response.on('data', function (chunk) {
        str += chunk;
     });  
    
    response.on('end', function () {
    _weather = JSON.parse(str);
    resolve();
     });  
    
    }
    http.request(options, callback).end();
    });
    
    return _weather;
    
    });
    

    【讨论】:

    • 在我将 const 声明更改为 var 后它可以工作。
    • 我的错。我刚刚确定了答案。但是不要使用var,而是使用let
    猜你喜欢
    • 2018-05-07
    • 2020-05-29
    • 1970-01-01
    • 2017-02-20
    • 1970-01-01
    • 2021-06-20
    • 1970-01-01
    • 2016-05-24
    • 1970-01-01
    相关资源
    最近更新 更多