2017-02-16 87 views
0

我试图更新解析用户领域,在它的中间功能停止:解析服务器云代码更新用户

Parse.Cloud.define("modifyAdminStatus", function(request, response) { 

var userQuery = new Parse.Query(Parse.User); 
var isAdmin = request.params.adminStatus; 
console.log("isAdmin:" + isAdmin); 
userQuery.equalTo("username", request.params.username); 
userQuery.find({ useMasterKey: true, 
    success: function(user) { 
     console.log(user.length); 
     console.log("Got User") 
     console.log(user); 
     user.set("isAdmin", isAdmin); 
     console.log("Set Status"); 
     user.save(null, {useMasterKey: true, 
      success: function(user) { 
       response.success(); 
      }, 
      error: function(error) { 
       response.error(error.message); 
      } 
     }); 
    }, 
    error: function(error) { 
     response.error(error.message); 
    } 
}); 
}); 

我没有得到任何语法错误,当我运行的代码我得到:

1 
Got User 
[ ParseUser { _objCount: 2, className: '_User', id: '2vigcitsl6' } ] 

在我的控制台。但是,在我尝试设置管理状态后,它似乎停止了代码。我曾尝试使用useMasterKey运行它,但没有做任何事情,所以也许我失去了一些东西和useMasterKey应该去哪里?

回答

1

答案是:

query.find({ 
... code here 
}); 

返回一个数组,使用query.first(或选择从一个数组对象),而不是将得到一个对象,并允许您在其上设置的东西。

0

当您尝试保存用户时,parse需要两个参数。第一个应该是包含任何更改的对象,第二个应该是保存选项。

所以你的情况,简单地改变你保存到user.save (null, {useMasterKey:true, success...})

你现在将创建Parse.User题为useMasterKey列,如果权限允许的方式。

+0

我做了这个改变,它仍然没有通过控制台的ParseUser行。 – trever

+0

这很奇怪。我能想到的唯一的事情就是isAdmin字段需要您尝试保存的不同类型的值。 – EReid

+0

嗯不,它看起来不错,isAdmin是一个布尔,我试图设置它的真/假我只是检查了所有的确定。 – trever