Node.js 在 Parse Server 中,空值?
Node.js in Parse Server, empty values?
我在使用 Parse-server 的 Back4App 中使用 Node.js。我正在尝试从 openweathermap.org 获取天气预报。但是我得到一个空的 return 值?我不明白为什么?
当在带有 flutter 的前端使用时,它可以完美地工作 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;
});
您不是在等待请求结束,函数正在它发生之前返回。尝试这样的事情(考虑到您使用的是 >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;
});
我在使用 Parse-server 的 Back4App 中使用 Node.js。我正在尝试从 openweathermap.org 获取天气预报。但是我得到一个空的 return 值?我不明白为什么? 当在带有 flutter 的前端使用时,它可以完美地工作 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;
});
您不是在等待请求结束,函数正在它发生之前返回。尝试这样的事情(考虑到您使用的是 >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;
});