SR Office

ブログ
2013年3月25日

MongoLabでオブジェクトのアップデート







フロントエンドはAngularJSで作成し、バックエンドはMongoLabを使ってオブジェクトの永続化を行った。RESTfulに接続を行ったが、GET,POST,DELETEはつまらなくて行けたが、PUT(更新)がうまくいかなかった。何度やっても更新されない。

MongoLabにあるAPI仕様書を読んでわかった。

$.ajax( { url: "https://api.mongolab.com/api/1/databases/my-db/collections/my-coll/4e7315a65e4ce91f885b7dde?apiKey=myAPIKey",
          data: JSON.stringify( { "x" : 2 } ),
          type: "PUT",
          contentType: "application/json" } );

PUTの時はMongoDB用のidをURLパラメタとして引き渡すが、PUTデータとしてはidは渡す必要はないのではないか!

早速コード書き換えて試してみた。

var url = 'https://api.mongolab.com/api/1/databases/my-db/collections/my-coll/';
var key = '?apiKey=myAPIKey';
var updateId = $scope.obj._id.$oid;
delete $scope.obj._id;  //これが必要?
$http.put(url + updateId + key,$scope.obj).success(function(data)
 { 
});

更新できた。_idは必要ないようだ。