更新用户对象时,云代码 "无效函数"。

问题描述 投票:0回答:1

我试图通过useMasterKey更新一个不是当前用户的用户对象。然而,当我运行它时,我得到了 "无效函数 "的错误。"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);
    });
});
javascript node.js parse-platform parse-server cloud-code
1个回答
1
投票

这个错误是对的,这不是一个有效的云代码函数.你上面定义的是一个Job.你需要定义一个云代码函数。

替换

"解析.云计算.工作"与"解析.云.定义"

这应该可以做到这一点。


1
投票

如果您的解析服务器版本为>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;
  }                                                                                    

});

0
投票

替换之后 Parse.Cloud.jobParse.Cloud.define 按照 @TanzimChowdhury 的建议,我还是遇到了无效函数的错误,原因是 status.successstatus.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.");
  });
});
© www.soinside.com 2019 - 2024. All rights reserved.