使用 facebook API 解析云代码无法正常工作

Parse Cloud Code with facebook API not working properly

我想从 facebook API(已经在我的数据库中)获取位置 ID,然后使用它从该位置获取事件。

因此,我首先运行一个查询来获取此信息,然后将此结果作为参数添加到我的 url 中。事实是查询正确返回了结果,但是在调用 httpRequest 时失败了。重要的是,当我使用硬编码的 locationId 时,我的 httpRequest 有效。

我想这个问题是由于响应调用而出现的,但我不知道如何解决它。我也在寻找一种更好的方法来设计此代码。有什么想法吗?

Parse.Cloud.define("hello", function(request, response) {

    var query = new Parse.Query("Location");
    query.find({
        success: function(results) {
            locationId = results[0].get("locationFbId");
            console.log(locationId);
        },
        error: function() {
            response.error("Failed on getting locationId");
        }
    });

    Parse.Cloud.httpRequest({
        url: 'https://graph.facebook.com/v2.2/'+locationId+'/events?access_token='+accessToken,
        success: function(httpResponse) {
            console.log(httpResponse.data);
            response.success("result");
        },
        error:function(httpResponse){
            console.error(httpResponse.message);
            response.error("Failed to get events");
        }
    });
});

Adolfosrs,你的问题是你的两个请求在不同的线程上是异步的运行。因此,直到您的第二个请求被调用后,您的第一个请求才会返回。我建议如下链接请求,以便您的第二个请求将使用从第一个请求中检索到的数据进行初始化。

Parse.Cloud.define("hello", function(request, response) {
    var query = new Parse.Query("Location");
    query.find({
        success: function(results) {
            locationId = results[0].get("locationFbId");
            console.log(locationId);
            Parse.Cloud.httpRequest({
                url: 'https://graph.facebook.com/v2.2/'+locationId+'/events?access_token='+accessToken,
                success: function(httpResponse) {
                    console.log(httpResponse.data);
                    response.success("result");
                },
                error:function(httpResponse){
                    console.error(httpResponse.message);
                    response.error("Failed to get events");
                }
            });
        },
        error: function() {
            response.error("Failed on getting locationId");
        }
    });
});