Cloud Code 'Invalid Function' 更新用户对象时
Cloud Code 'Invalid Function' when updating user object
我正在尝试通过 useMasterKey 更新不是当前用户的用户对象。但是,我在 运行 时收到错误 "invalid function"。 "blockedFrom" 是用户对象中的一个数组,用于存储阻止相关用户的用户列表,我正在尝试通过 addUniqueObject 添加用户名。
Parse.Cloud.job('addBlockedFrom', function(request, status) {
var query = new Parse.Query(Parse.User);
query.equalTo("username", request.params.otherUser);
query.each(function(record) {
record.addUniqueObject("blockedFrom", request.params.username);
return record.save({useMasterKey:true});
},{useMasterKey:true}).then(function(result) {
console.log("addBlockedFrom completed.");
status.success("addBlockedFrom completed.");
}, function(error) {
console.log("Error in addBlockedFrom: " + error.code + " " + error.message);
status.error("Error in addBlockedFrom: " + error.code + " " + error.message);
});
});
错误是对的,它不是有效的云代码函数。
您在上面定义的是一个工作。
您需要定义一个云代码函数。
替换
"Parse.Cloud.job" 和 "Parse.Cloud.define"
这应该可以解决问题。
按照@TanzimChowdhury 的建议将Parse.Cloud.job
替换为Parse.Cloud.define
后,由于status.success
和status.error
,我仍然遇到无效函数错误。状态未定义,用 response
替换状态已修复。
工作代码
Parse.Cloud.define("addBlockedFrom", function(request, response) {
var query = new Parse.Query(Parse.User);
query.equalTo("username", request.params.otherUser);
query.each(function(user) {
user.addUnique("blockedFrom", request.params.username);
return user.save( null, { useMasterKey: true });
}).then(function() {
// Set the job's success status
response.success("addBlockedFrom successfully.");
}, function(error) {
// Set the job's error status
response.error("Error addBlockedFrom.");
});
});
如果您的解析服务器版本 >3,那么您的云代码必须更改为新版本。
试试这个:
Parse.Cloud.define("addBlockedFrom", async (request) => {
var query = new Parse.Query(Parse.User);
query.equalTo("username", request.params.otherUser);
try{
var otherUser = await query.first();
otherUser.addUnique("blockedFrom", request.params.username);
return otherUser.save( null,{useMasterKey:true});
}catch(err){
throw err;
}
});
我正在尝试通过 useMasterKey 更新不是当前用户的用户对象。但是,我在 运行 时收到错误 "invalid function"。 "blockedFrom" 是用户对象中的一个数组,用于存储阻止相关用户的用户列表,我正在尝试通过 addUniqueObject 添加用户名。
Parse.Cloud.job('addBlockedFrom', function(request, status) {
var query = new Parse.Query(Parse.User);
query.equalTo("username", request.params.otherUser);
query.each(function(record) {
record.addUniqueObject("blockedFrom", request.params.username);
return record.save({useMasterKey:true});
},{useMasterKey:true}).then(function(result) {
console.log("addBlockedFrom completed.");
status.success("addBlockedFrom completed.");
}, function(error) {
console.log("Error in addBlockedFrom: " + error.code + " " + error.message);
status.error("Error in addBlockedFrom: " + error.code + " " + error.message);
});
});
错误是对的,它不是有效的云代码函数。 您在上面定义的是一个工作。 您需要定义一个云代码函数。
替换
"Parse.Cloud.job" 和 "Parse.Cloud.define"
这应该可以解决问题。
按照@TanzimChowdhury 的建议将Parse.Cloud.job
替换为Parse.Cloud.define
后,由于status.success
和status.error
,我仍然遇到无效函数错误。状态未定义,用 response
替换状态已修复。
工作代码
Parse.Cloud.define("addBlockedFrom", function(request, response) {
var query = new Parse.Query(Parse.User);
query.equalTo("username", request.params.otherUser);
query.each(function(user) {
user.addUnique("blockedFrom", request.params.username);
return user.save( null, { useMasterKey: true });
}).then(function() {
// Set the job's success status
response.success("addBlockedFrom successfully.");
}, function(error) {
// Set the job's error status
response.error("Error addBlockedFrom.");
});
});
如果您的解析服务器版本 >3,那么您的云代码必须更改为新版本。
试试这个:
Parse.Cloud.define("addBlockedFrom", async (request) => {
var query = new Parse.Query(Parse.User);
query.equalTo("username", request.params.otherUser);
try{
var otherUser = await query.first();
otherUser.addUnique("blockedFrom", request.params.username);
return otherUser.save( null,{useMasterKey:true});
}catch(err){
throw err;
}
});