Javascript Backbone.js与express.js-仅使用POST和GET同步

Javascript Backbone.js与express.js-仅使用POST和GET同步,javascript,ajax,node.js,backbone.js,express,Javascript,Ajax,Node.js,Backbone.js,Express,我的应用程序客户端是Backbone.js,后端是Express.js 我在使用主干模型和集合(它们使用urlRoot:“/users”)与API的所有部分同步时遇到问题。 我只能使用GET或POST,不能使用PUT或DELETE。 *我不允许使用更多的型号* 不允许使用jQuery ajax 我的API 添加新用户: 我需要向/users发布新数据的JSON。所以我在-this.model.save({newdata…})上做得很好 列出所有用户: 为此,我的API使用正确的处理程序响应GET

我的应用程序客户端是Backbone.js,后端是Express.js

我在使用主干模型和集合(它们使用urlRoot:“/users”)与API的所有部分同步时遇到问题。 我只能使用GET或POST,不能使用PUT或DELETE。 *我不允许使用更多的型号* 不允许使用jQuery ajax

我的API

添加新用户: 我需要向/users发布新数据的JSON。所以我在-
this.model.save({newdata…})上做得很好

列出所有用户: 为此,我的API使用正确的处理程序响应GET/users,因此,
this.collection.fetch()

登录: 我的API为此接受POST to/users/login。如何向我的模型中添加一个函数“logIn”,该函数将使用自定义sync/pass options.url进行同步,或者以任何其他方式发布到/users/logIn

注销: API接受POST to/users/logout-如何使用我的主干模型发送此请求

用户ID: 对于GET/users/:id,这里有相同的问题

更新用户: POST/users/:id-再次问相同的问题

——所以实际上,简而言之,问题是--


实现主干模型方法的最佳方式(或最“正确”)是什么,类似于“model.save()”——但只需发布/获取与urlRoot稍有不同的路径即可?您可能有两种选择。一种是以支持所需URL的方式构建模型。例如,有一个
用户
模型和一个
会话
模型,分别处理更新用户和管理登录状态

您可能应该做的另一件事是在模型中使用
url
方法

在您的
用户
模型中类似于此。(注意:此处使用
urlRoot
而不是
url
是相同的,但对于url中需要的任何更复杂的内容,这是正确的方法)

您可以根据
会话
是否为新会话,将此概念扩展到
会话
模型中,以处理注销与登录

更新:

如果必须使用相同的模型,最好完全绕过
Backbone.sync
方法,编写一个带有成功/错误处理程序的自定义AJAX调用,这些处理程序知道如何清理问题

login : function() {
  $.post("/users/login", {success: function (response) {
      // Update user as needed
    }, error: function (xhr, response) {
      // Handle errors
    }
  }
}

谢谢我不允许使用更多的模型,所有的逻辑都应该在用户模型/集合中。关于第二个选项-那么我如何发布到/users/login?我不明白为什么不允许你使用更多的型号。如果您想在主干结构中工作,那么这是正确的方法。基本上,您应该将会话视为一个独立于用户的对象。如果您真的想这样做,那么您应该完全独立于主干模型来处理AJAX。原因-我的老板。他也不允许我使用jQueryAjax。他希望我为用户模型进行自定义同步,并使用使用此同步的方法。Ok。是的,如果您愿意,您可以重写
Backbone.sync
(尽管这没有多大意义,因为您正试图覆盖它所做的大部分工作,而只是在下面使用纯AJAX)。这里使用
Backbone.sync
的正确方法是按照我最初说的做,并创建一个单独的
会话
模型。
login : function() {
  $.post("/users/login", {success: function (response) {
      // Update user as needed
    }, error: function (xhr, response) {
      // Handle errors
    }
  }
}