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

问题描述 投票:0回答:1

我的应用是用于客户端的Backbone.js,用于后端的Express.js。

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

我的API

添加新用户:我需要使用新数据的JSON对/ users进行POST。 所以我用– this.model.save({new data...})

列出所有用户:为此,我的API使用适当的处理程序对GET / users进行响应-因此, this.collection.fetch() -可以正常工作。

登录:我的API为此接受POST到/ users / login。 如何在模型中添加“登录”功能,该功能将使用自定义同步/传递options.url进行同步-或通过任何其他方式-将发布到/ users / login?

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

用户ID:此处针对GET / users /:id的相同问题

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

---实际上,简而言之的问题是-

什么是实现骨干模型方法的最佳方法(或最“正确”),类似于“ model.save()”-但仅将POST / GET定位到与urlRoot不同的路径?

javascript ajax node.js backbone.js express
1个回答
1
投票

您可能在这里有几个选择。 一种可能是通过支持所需网址的方式来构建模型。 例如,具有一个User模型和Session模型,分别处理更新用户和管理登录状态。

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

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

url : function() {
  var base = "/users/";
  if(this.isNew()) {
    return base;
  } else {
    return base + this.get("id");
  }
}

您可以扩展相同的概念以在Session模型中使用,以根据Session是否为新Session来处理注销还是登录。

更新:

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

login : function() {
  $.post("/users/login", {success: function (response) {
      // Update user as needed
    }, error: function (xhr, response) {
      // Handle errors
    }
  }
}
© www.soinside.com 2019 - 2024. All rights reserved.