【问题标题】:Proper way to update mongodb document from REST从 REST 更新 mongodb 文档的正确方法
【发布时间】:2016-11-24 02:56:30
【问题描述】:

我有AngularJs client。他希望使用 CRUD 架构来使用每个 API。例如:

GET /user
GET /user/:id
POST /user
PUT /user/:id
DEL /user/:id

这是他要用于我的架构的所有端点。(使用 MongoDB 数据库)。

我有 user 架构,例如(简化):

{
    id : ObjectId("..."),
    name: "Foo fooer",
    itemIds : [
       ObjectId("..."),
       ObjectId("..."),
       ObjectId("...")
    ]
}

和架构项目(不需要显示问题)。

我们需要从user.itemIds添加/删除 itemsId
客户想要创建新架构 userItems

{
   id : ObjectId("..."),
   userId : ObjectId("..."),
   itemID : ObjectId("...")
}

并且他想从用户架构中删除 user.itemIds 并创建 4 个 CRUD 端点 /userItems。

我认为这种方法是错误的,规范化了 mongo 数据库。

但我不知道双方(客户端和服务器)哪个更好。
1)创建2个端点POST /UserItemDEL /UserItem来更新user.itemIds中的项目。

2) 使用现有 API PUT /user 更新 user.itemIds,但客户端需要发送整个 itemsIds 数组来更新它(如果有很多,这可能是不好的方法。

客户说这两种方法不好,他只知道他的 SQL REST 架构(一切都标准化)。我如何证明他,他错了?因为他对我说: Server to adapt to the client and not vice versa.

谢谢。

【问题讨论】:

    标签: node.js mongodb rest database-design


    【解决方案1】:

    This 是一篇关于 RESTful API 的好文章。

    简而言之,您的 RESTful API 应该:

    • 关注资源
    • 有意义
    • 一致性

    例如:

    • 当您想向用户添加项目时:首先找到用户,而不是相反。所以,POST users/:userId/items/ 向用户添加新项目是好的。或者,DELETE users/:userId/items/:itemId 从用户那里删除一个项目。
    • 当您要查找拥有此特定项目的所有用户时:GET /items/:itemId/users/

    【讨论】:

      猜你喜欢
      • 2019-06-14
      • 2017-06-21
      • 2020-09-26
      • 2019-08-19
      • 1970-01-01
      • 2016-01-07
      • 2013-09-30
      • 1970-01-01
      • 2015-02-21
      相关资源
      最近更新 更多