フロントエンドは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は必要ないようだ。