在后台作业中引用Parse.User

时间:2014-08-04 22:05:51

标签: javascript parse-platform

我想要做的是创建一个MComparisonArray对象,其Name属性为MatchCenterMCItems数组属性等于eBayResults数组,并且具有此对象的parent属性是指向创建它的User对象的指针,这样每个User都有自己的特定MComparisonArray对象与其帐户相关联。

当我尝试在下面执行此操作时,它会给出一个错误,指出User未定义,正如我预期的那样。我不确定如何形成语法告诉Parse使对象的父属性成为User的指针。

我知道如果我想在iOS应用程序中执行此操作,我会执行('parent', Parse.User.current()),但在后台作业中不存在Parse.User.current这样的事情。

主要承诺链:

   Parse.Cloud.job("MatchCenterBackground", function(request, status) {
      //code to setup usersQuery ...
      var usersQuery = new Parse.Query(Parse.User);

      return usersQuery.each(function (user) {
        return processUser(user).then(function(eBayResults){
          return matchCenterComparison(eBayResults);
        });
      }); 
    });

来自matchCenterComparison功能的代码段

  var newMComparisonArray = new mComparisonArray();
  newMComparisonArray.set('Name', 'MatchCenter');
  newMComparisonArray.set('MCItems', eBayResults);
  newMComparisonArray.set('parent', Parse.User);

  // Save updated MComparisonArray  
  newMComparisonArray.save().then({
    success: function() {
      console.log('MComparisonArray successfully created!');
    },
    error: function() {
      console.log('nah no MComparisonArray saving for you bro:' + error);
    }
  });

2 个答案:

答案 0 :(得分:2)

您的外部范围内有用户,但您没有将其传递给该功能。

更改您的调用代码以传递当前用户:

return matchCenterComparison(user, eBayResults);

更新您的函数定义以接受用户作为第一个参数:

function matchCenterComparison(parentUser, eBayResults) {
    // ...
}

然后将该用户用于父级:

newMComparisonArray.set('parent', parentUser);

答案 1 :(得分:0)

如果添加主密钥,它是否有效? Parse.Cloud.useMasterKey()

Parse.Cloud.job("MatchCenterBackground", function(request, status) {
  //code to setup usersQuery ...
  Parse.Cloud.useMasterKey();
  var usersQuery = new Parse.Query(Parse.User);

  return usersQuery.each(function (user) {
    return processUser(user).then(function(eBayResults){
      return matchCenterComparison(eBayResults);
    });
  }); 
});