2016-01-24 56 views
3

没错,所以我只是试图通过REST API更新我的对象。我的请求成功了,我收到一个包含最新更新时间戳的200响应,但对象的列值没有更改。无法通过REST API更新Parse对象

Movies类有titlegenre列,类上的权限设置为所有行的公共读写。

下面是一些代码

var data = {title:'The Revenant'}; 

qwest.put('https://api.parse.com/1/classes/Movies/myObjectId', JSON.stringify(data)) 
    .then(function(xhr, response) { 
     console.log(response); 
    }) 
    .catch(function(xhr, response, e) { 
     console.log(e); 
    }); 

,我回去怎么回答?

{"updatedAt":"2016-01-24T07:59:54.977Z"}

所以请求成功,但如果我再次GET对象或检查分析管理页面,对象并没有改变。是什么赋予了?

编辑

仅供参考,如果我使用JavaScript SDK,我可以更新模型。

var Movies = Parse.Object.extend("Movies"); 
var query = new Parse.Query(Movies); 

query.get(myObjectId, { 
    success: function (movie) { 
     movie.set("title", data.title); 
     movie.save(); 
    }, 
    error: function (object, error) { 
     console.log(error); 
    } 
}); 

此更新模型。但对于我的特殊用例,我真的更喜欢使用REST API而不是SDK,但我想这意味着它不是权限问题或ID不匹配等。

+0

VAR数据= { “标题”: “的亡魂”};试试吧..可能会更好 –

+0

由于无效的JSON,这给出了一个“400”响应。 –

回答

2

代码段

qwest.put('https://api.parse.com/1/classes/Movies/Dh7zjiP9KW', data, {dataType:"json",headers:{'x-parse-application-id':'XXX','X-Parse-REST- API-Key':'XXX'}}) 
      .then(function(xhr, response) { 
       console.log(response); 
      }) 
      .catch(function(xhr, response, e) { 
       console.log(e); 
      }); 
+0

谢谢!明确设置数据类型是必要的步骤。 –

0

您收到的响应表示该对象已成功更新。仔细检查你是否在查看正确的对象,并且“updatedAt”字段与前面看到的响应相匹配。

如果您立即使用相同的“qwest”客户端和https://api.parse.com/1/classes/Movies/myObjectId资源URL(使用正确的对象ID)获取对象,会发生什么情况?

+0

是的,对象是正确的。如果我在'then'内部执行'get'请求,则会返回正确的对象。它的时间戳已更新,但其标题保持不变。 –

+0

您可以详细说明您使用的客户端吗?提出此请求时,您正在设置哪些标头? –

0

尝试移除JSON.stringify(数据),只是传递数据,

+0

没有骰子。 '{“code”:107,“error”:“invalid JSON”}' –

+0

下面的代码适用于我,我将数据类型设置为json。 –

+0

嗯我会尝试明确设置数据类型并回报 –