2015年11月19日

Backbone.jsで永続化時のURLやらmethodを変更

通常Backbone.jsでは以下のメソッドを利用した場合に右に書いたようなAjax通信を行いサーバーとの動機を行おうとする。(Collection.urlが"/api/foo"の場合)






Model.create/api/fooPOST
Model.save/api/fooPUT
Model.destroy/api/fooDELETE
Collection.fetch/api/fooFETCH


ただ、これをAPI仕様に合わせる為に以下のように変更する。






Model.create/api/addPOST
Model.save/api/deditPOST
Model.destroy/api/deletePOST
Collection.fetch/api/readPOST


Collectionはextend時に以下のようなrequestInfoオブジェクトとsyncメソッドを指定。

app.Library = Backbone.Collection.extend({
model : app.Book,
url : "/api/books",
requestInfo : {
'read' : {type: 'POST', url: "/api/books/read"}
},
sync: function(method, model, options){
options.url = this.requestInfo[method].url;
options.type = this.requestInfo[method].type;
Backbone.sync(method, model, options);
}
});


Modelはextend時に以下のようなrequestInfoオブジェクトとsyncメソッドを指定。
(サーバーのせっていによってはemulateJSONの指定は不要)

app.Book = Backbone.Model.extend({
requestInfo : {
'create': {type: 'POST', url: "/api/books/add"},
'update': {type: 'POST', url: "/api/books/edit"},
'delete': {type: 'POST', url: "/api/books/delete"}
},
sync: function(method, model, options){
options.url = this.requestInfo[method].url;
options.type = this.requestInfo[method].type;
options.emulateJSON = true;
if(model)options.data = model.toJSON();
Backbone.sync(method, model, options);
}
});

タグ:Backbone.js
posted by ねこまんま at 02:05 | Comment(0) | TrackBack(0) | Backbron.js | 更新情報をチェックする

MongoDBの対話モード

MongoDBの対話モードに関するメモ。続きを読む
タグ:node.js MongoDB
posted by ねこまんま at 01:53 | Comment(0) | TrackBack(0) | node.js | 更新情報をチェックする

2015年11月17日

続・MacでMongoDBを利用する

MacでMongoDBを利用するで設定したMongoDBを再び起動しようとしるするとエラーが出たので入れ直すメモ。

続きを読む
タグ:MongoDB node.js
posted by ねこまんま at 15:10 | Comment(0) | TrackBack(0) | node.js | 更新情報をチェックする

2015年11月10日

Backbone.jsのvalidateメソッド

Backbone.jsのvalidateメソッドについて詳しく知らんかったのでメモ。

set()やunset()時に{validate:true}というオプションを付与するとvalidateメソッドで定義したバリデーションを行う。何も返さなければそのままそのままモデルに格納されるが何か返した場合にはinvalidイベントを発火させモデルには何も格納しない。

var Bar = Backbone.Model.extend({
initialize:function(){
this.on("invalid",function(){
console.log("invalid");
});
},
defaults:{
name:"Jhon"
},
validate: function(attr){
console.log("validate");
if(!attr.name){
return false;
}
}
});

var bar = new Bar();

console.log(bar.get("name"));//Jhon

bar.set({name:""},{validate:true});//validate,invalid

console.log(bar.get("name"));//Jhon

bar.unset("name",{validate:true});//validate,invalid

console.log(bar.get("name"));//Jhon

bar.set({name:"Ben"},{validate:true});//validate

console.log(bar.get("name"));//Ben

posted by ねこまんま at 18:09 | Comment(0) | TrackBack(0) | Backbron.js | 更新情報をチェックする

2015年11月02日

nodebrew で利用しているnode.jsのバージョンを上げる

現在インストールされているnode.jsのバージョンが「v0.10.12」とかなり昔のなので久々にアップデートしてみました。続きを読む
posted by ねこまんま at 08:54 | Comment(0) | TrackBack(0) | node.js | 更新情報をチェックする