在Parse.Cloud.beforeSave中查询

时间:2014-06-30 02:01:15

标签: parse-platform

这是我想要做的事情

Parse.Cloud.beforeSave("Users", function(request, response) {
Parse.Cloud.useMasterKey();
var user = request.object;
var query = new Parse.Query(Parse.Installation);
query.equalTo("installationId", user.get("installationId"));
query.find({
    success: function(results) {
    if(results !== undefined ) {
        console.log("beforeSave Users:" + results + " User Exists For :" +user.get("installationId"));  
        response.error();
        }
    else{
        console.log("beforeSave Users:" + results + " Creating User For :" +user.get("installationId"));
        response.success();
        }
    },
    error: function(error) {
        // on error, log it and return an empty array
        console.log("beforeSave Users Error :" + error.message);
    }
  });
});

它工作正常,但我得到了结果

I2014-06-30T01:51:02.578Z] v99:为用户触发了before_save   输入:{“original”:null,“update”:{“installationId”:“ef0317be-e634-4f64-a482-810c9839117c”,“userName”:“Test”,“userPhoneNumber”:“0123456789”}}   结果:验证失败

为什么验证失败?如果我删除Parse.Cloud.useMasterKey();,则此验证错误消失,但我的功能停止工作。

有人可以解释一下吗?为什么此验证失败错误?

即使没有找到结果,我得到一个空数组,我想要一个成功的结果。问题是我试图了解添加或删除Parse.Cloud.useMasterKey();如何在这种情况下产生影响。

它使我的代码工作,但为什么我得到结果:验证失败。

1 个答案:

答案 0 :(得分:0)

success处理程序中的逻辑不正确。

如果未找到匹配项,则results参数将为空数组。你应该检查长度为0。

鉴于您只希望获得单个结果,您应该转而使用first(),在这种情况下,您需要检查undefined