updating a column Parse Rest API

2019-12-16 21:03发布

i am trying to update a Users information for ex. Phone, email etc.

i looked at this: https://parse.com/docs/rest/guide#users-updating-users

so i wrote this in my controller:

@response = HTTParty.put('https://api.parse.com/1/users/',
  :headers => {"X-Parse-Application-Id" => "APIKEY", 
               "X-Parse-REST-API-Key" => "APIKEY",
               "X-Parse-Session-Token" => session[:session_token],
               "Content-Type" => "application/json"},
  :data    => {"phoneNumber" => "9994432"})

I return @response in a view and get back this: {"error"=>"requested resource was not found"}

I was thinking maybe its because im not passing the user's objectid in the url?

2条回答
再贱就再见
2楼-- · 2019-12-16 21:50

Well, now that you have played with creating HTTP requests to API manually, it's time to switch to some library/gem for interactions with Parse. Hopefully, people who built the library that you will find, already have dealt with many routine tasks (like formatting your JSON properly – the error you are investigating right now), and have good documentation for many cases.

I suggest parse-ruby-client.

Add gem 'parse-ruby-client', github: 'adelevie/parse-ruby-client' to Gemfile (it's better to use master version, not the current Rubygems version, because they are saying that there are some useful changes which are not yet pushed to Rubygems), then run bundle install as usual, and you are good to go.

Object saving is as easy as

game_score = client.object("GameScore")
game_score["score"] = 1337
game_score["playerName"] = "Sean Plott"
game_score["cheatMode"] = false
result = game_score.save
puts result

according to their documentation.

UPD. Answering original question. You can use a function to provide object id dynamically:

def update_user(object_id)
  @response = HTTParty.put("https://api.parse.com/1/users/#{object_id}",
    :headers => {"X-Parse-Application-Id" => "APIKEY", 
           "X-Parse-REST-API-Key" => "APIKEY",
           "X-Parse-Session-Token" => session[:session_token],
           "Content-Type" => "application/json"},
    :data => {"phoneNumber" => "9994432"})
end
查看更多
贪生不怕死
3楼-- · 2019-12-16 21:55

My solution is force the variables to int and string

response = HTTParty.put("https://api.parse.com/1/users/#{object_id}",
:headers => {
        "X-Parse-Application-Id" => ENV['PARSE_APP_ID'].to_s, 
        "X-Parse-REST-API-Key" => ENV['PARSE_API_KEY'].to_s,
        "X-Parse-Session-Token" => token.to_s,
        "Content-Type" => "application/json"},
  :body => {"h_optimum" => optimum.to_i,
        "h_moderate" => moderate.to_i,
        "h_appalling" => appalling.to_i}
)
查看更多
登录 后发表回答