2017-02-16 91 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