angularjs - 单个 rest 'put' 端点是否足以用嵌套数组更新文档?

标签 angularjs node.js rest mongoose lodash

[我正在复制去年的问题,仍然没有回答,并稍微扩展一下]

我正在使用 node.js + mongoose (MEAN.io) 开发 REST api。我有一个模型,其中几乎没有嵌套数组。我有一个 put 端点来更新文档。但是,要将对象添加到子数组中,我需要一个单独的端点还是有办法使用相同的放置端点?

companyName: String,
city: String,
pincode: Number,
managers: [{
    name: String,
    dob: Date,
    gender: String,         
    highestEducation: String,
    email: String,
    phoneNumbers: [{phoneNumber: Number}],
}],

我有一个端点 ../api/customer 用于更新文档。它用我提供的 json 替换现有文档。所以,如果我想添加一个管理器(而不是替换现有的管理器),我是否需要为此单独的端点?优化方案是什么?

目前,我已经创建了另一个像这样的 put api:

../api/customer/:id/managers 

在 API 的服务器端,我使用的是 customer.managers.push(updates); 而不是 _.merge(customer, updates)。 p>

最佳答案

您的 API 设计最终是您的选择。就个人而言,我更喜欢让事情变得很浅,如果那样的话,也许一段关系很深。通常,我将为每个资源提供一个端点。

就您关于现有客户的现有经理的新电话号码的示例而言。使用有点浅的 api 的一般流程可能是:

  • 前端:
    • 转到 URL site/users/1(这会加载用户的基本 View )。
  • 应用程序接口(interface):
    • 行动:获取
    • 网址:网站/api/v1/users/1
    • 描述:显示用户 1
    • 响应:{ id: 1, name: "bob", age: 22 }
  • 应用程序接口(interface):
    • 行动:获取
    • 网址:site/api/v1/managers?query=user_id=1
    • Desc: INDEX 所有用户 1 的经理
    • 响应:{ [ { id: 55, name: "mana1", phone: 4444 }, { id: 66, name: "mana2", phone: 333 }, .. ] }
  • 前端:将经理列为一堆带有一些隐藏 ID 的表单
  • 前端:输入电话号码点击保存
  • 应用程序接口(interface):
    • 行动:补丁
    • 网址:站点/api/v1/managers/55
    • body :{ 电话:9898 }
    • Desc: PATCH manager 55 with new phone data
    • 响应:{ ..更新数据.. }

我个人非常喜欢这个 API: https://github.com/WhiteHouse/api-standards

它不是休息,而是简单、可重复和可用。

关于angularjs - 单个 rest 'put' 端点是否足以用嵌套数组更新文档?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37644787/

相关文章:

java - Camel Rest DSL 删除另一条额外路线

xml - 如何使用 Grails REST webservices 输出 xml 命名空间

angularjs - Protractor 可以用于测试驱动开发吗?

node.js - 我是否为nodejs正确设置了域?

couchdb 设计 View ,更新文档创建字段

node.js - 您将如何在 NoSql 数据库中建模客户 > 订单 > ordertem > 产品?

node.js - 在环回模型中隐藏_所有_远程方法

javascript - 如何使用输入值 Angular Json 填充表?

javascript - ng-pattern 与脚本验证

angularjs - 有没有办法将范围传递给指令templateUrl : function?