Javascript Parse.com云代码函数返回success promise中未定义的
以下是我的云代码函数的外观:Javascript Parse.com云代码函数返回success promise中未定义的,javascript,parse-platform,promise,parse-cloud-code,Javascript,Parse Platform,Promise,Parse 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
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。有趣的是,我可以确认该对象确实存在于具有该升级代码的服务器上,并且used=false。这个问题与另一个问题类似,只是我的代码使用承诺,仍然存在问题,并且是一个云代码函数,而不仅仅是一个javascript函数 查询成功解析承诺,但仍传递空/未定义的对象,这是预期的行为吗?如果没有,我做错了什么?
请注意,我用一个
count()
替换了first()
,并且通过一个(非null)值1传递的计数成功地解析了承诺。这再次确认该对象确实存在于服务器上我还尝试了
成功:
,错误:
回调方法,与Javascript承诺相反,但它也不起作用。我只是尝试了一下,但问题依然存在!else块仍在执行,因此在promise解析过程中似乎传递了未定义的变量。我正在相应地更新我的问题。您是否通过打印invite
从parse获得响应?您已经提到“count”返回非null,因此您可以使用count
而不是first
对吗?从技术上讲,是的,但在我的情况下,我需要对检索到的invite对象执行操作,我已删除这些操作以用于测试。是未定义的还是null
?您的日志与代码不同。它未定义。很抱歉不匹配,代码已更新,以响应先前删除的注释。我现在将更新日志。