我尝试在解析时实施重新发送电子邮件验证链接,我更新了我的用户电子邮件ID,我想再次触发电子邮件验证。但是,当我尝试使用管理员角色时,我无法保存该对象。我搜索和各种帖子但没有成功。
Cloud Code: -
Parse.Cloud.define("resend_email_verification_link", function(request, response) {
Parse.Cloud.useMasterKey();
console.log("User name:" + request.params.user_find);
var user_name = request.params.user_find;
var mail_user = Parse.Object.extend("User");
var user_save = new mail_user();
var query_user = new Parse.Query(user_save);
query_user.equalTo('username', user_name);
query_user.find ({
success: function(results)
{
if (results.length > 0)
{
var email_user = "hemantsuthar20@gmail.com"; //results[0].get("email");
//var email_user = results[0].get("email");
console.log("Reults find for user name "+ user_name + "email Id:" + email_user);
results[0].set("email", email_user);
results[0].save(null, {
success:function () {
console.log("Successfully saved");
},
error:function (error) {
console.log("Could not save" + error.message);
}
});
console.log("Dont mess with me ");
response.success();
} else {
response.error("No User Exists");
}
},
error: function(error) {
response.error("Query Failed.Error = "+ error.message);
}
});
});
日志: -
I2015-12-16T18:48:15.750Z] v58冉云功能 resend_email_verification_link with:输入: {" user_find":" rahulsmarty"}结果:未定义
I2015-12-16T18:48:15.779Z]用户名:rahulsmarty
I2015-12-16T18:48:15.833Z]结果查找用户名rahulsmartyemail ID:hemantsuthar20@gmail.com
I2015-12-16T18:48:15.836Z]别与我混淆
请帮我解决这个问题。
答案 0 :(得分:0)
首先,使用已存在的内容更新电子邮件字段不会触发Parse上的电子邮件验证重发。您需要先使用不同的内容更新文件,然后使用原始电子邮件地址再次更新,以触发验证电子邮件。为此,我建议使用像用户objectId
这样的唯一标识符来构建虚拟临时电子邮件地址,例如objectId@objectId.com
。首先将其保存到该字段,然后使用原始电子邮件地址再次更新。
另外请记住,在Parse上保存对象时,需要等待该操作完成,然后才能在云代码中返回response.success()
。解析save()
函数是异步方法,这意味着当它返回时,其操作不一定完成。
异步方法返回Promise,您需要在返回response.success()
或response.error()
之前等待履行此承诺。请务必阅读并理解Prase文档中Promise的概念:https://www.parse.com/docs/js/guide#promises