Parse.com云代码函数在成功承诺中返回undefined

时间:2015-07-09 10:25:23

标签: javascript parse-platform promise cloud-code

以下是我的云代码功能:

Parse.Cloud.define("usePromotionCode", function (request, response) {
    Parse.Cloud.useMasterKey();
    var promotionCode = request.params.promotionCode;
    if (promotionCode == null) {
        response.error("Promotion code must be specified!");
    } else {
        var promotionCodeQuery = new Parse.Query("Invite");
        promotionCodeQuery.equalTo("promotionCode", promotionCode);
        promotionCodeQuery.equalTo("used", false);
        promotionCodeQuery.first().then(
            function (invite) {
                if (invite !== undefined) {
                    console.log("Successfully found the invite. Promoting the user");
                    response.success("true");
                } else {
                    console.error("Found invite but it is undefined");
                    response.error("Invalid promotion code");
                }
            },
            function (error) {
                response.error("Invalid promotion code: " + error);
            }
        );
    }
});

这是日志的适当部分:

E2015-07-09T10:07:13.617Z]v142 Ran cloud function usePromotionCode for user fYHD27Er76 with:
  Input: {"promotionCode":"ThHuf1rhqmfSmfi"}
  Result: Invalid promotion code
I2015-07-09T10:07:13.785Z]Found invite but it is undefined

查询承诺似乎通过成功响应解析。但是,从日志中看到它传递的invite变量为null。有趣的是,我可以确认该对象确实存在于具有该促销代码的服务器上并且使用= false 此问题类似于另一个stackoverflow question,除了我的代码使用promises并且仍然存在问题,并且是云代码函数,而不仅仅是javascript函数。

查询是否需要成功解析promise并仍然传递null / undefined对象?如果没有,我做错了什么? 请注意,我将first()替换为count(),并且使用(非空)值1传递的计数成功解析了promise。这再次确认服务器上存在该对象!
我还尝试了success:error:回调方法而不是Javascript承诺,但它也没有用。

0 个答案:

没有答案