Backbone model.save() is causing POST not PUT

后端 未结 5 640
天涯浪人
天涯浪人 2021-01-12 13:35

I have a Backbone model:

var User = Backbone.Model.extend({
  idAttribute: \'_id\',

  url: \'/api/user\',

  defaults:
    { username: \'\'
    }
});
         


        
5条回答
  •  既然无缘
    2021-01-12 13:55

    Try checking user.isNew().

    Looks like you created a new model which does not have an ID, that's why it's trying to add it during Backbone.sync.

    UPDATE:

    Above is exactly true. It does POST because it's a new model (which means, it does not have an id). Before you fetch a model, you need to give it an id. In your example:

    var user = new User();
    user.fetch();
    user.save(); // in XHR console you see POST
    
    var user = new User({ id: 123 });
    user.fetch();
    user.save(); // in XHR console you see PUT
    

提交回复
热议问题