这是parse-server的行为与Parse.com不同的问题。
我的应用程序中有匿名用户,使用ParseUser.signUp(Android SDK)时,parse-server和Parse.com之间存在重要区别。 Parse.com首先会检查用户名冲突,如果存在冲突,则甚至不会调用beforeSave函数。这使我可以在beforeSave代码中进行一些假设。

现在在parse-server中,始终调用beforeSave,并且只有在我response.success()之后,它才无法保存。
问题是,如果内部签约失败(例如重复的用户名),则应该不会发生某些代码,但是无论如何都会发生,因为我假设如果调用beforeSave,则用户名是唯一的。我的解决方案是通过对用户名的ParseQuery自己进行检查,但是现在还有另一个问题-如何区分匿名用户和新用户?

在我的应用中,每个新用户都会自动保存为匿名用户。对于匿名用户,有些事情您不能做(例如,更改用户名)。现在过了一会儿,当他想要注册时,他输入了一个用户名,在beforeSave中,我无法确定他是否仅尝试更改用户名,还是在注册?如果他尝试注册,则应允许他设置用户名,但是如果他只是尝试更改其用户名,那么我想拒绝该更改。

总结一下:我该如何在User类的beforeSave中判断是否调用了signUp或进行了常规保存?

最佳答案

您可以在beforeSave中尝试使用.existed()函数吗?

Parse.Cloud.afterSave(Parse.User, function(request) {
    if(!(request.object.existed())){
      //Not sure what anonymous user would return here...
    }
});

关于parse-platform - parse-server:如何区分User类BeforeSave中的signUp和常规ParseUser.save?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/40877666/

10-10 15:08