有条件地更新/删除后端的文档。我是否该?我是否分配了 PUT、POST 或 DELETE http 方法?
Posted
技术标签:
【中文标题】有条件地更新/删除后端的文档。我是否该?我是否分配了 PUT、POST 或 DELETE http 方法?【英文标题】:Conditionally updating / deleting a document in backend. Should I? Do I assign a PUT, POST, or DELETE http method?有条件地更新/删除后端的文档。我是不是该?我是否分配了 PUT、POST 或 DELETE http 方法? 【发布时间】:2016-11-29 05:02:10 【问题描述】:以下函数用于“集合模型”。
在某些情况下,我想删除或更新文档。
我应该使用 PUT 还是 DELETE?
我可以将它们分开并检查客户端上的验证/条件,但这似乎不那么干燥。
我必须向客户端和服务器添加额外的代码行来实现相同的目的。
CollectionSchema.statics.kill = function(o, cb)
return Collection
.findAsync(o)
.then(function(existing)
if (existing.length && (existing[0].vote !== 0 || existing[0].favorite == true))
return Collection
.findByIdAndUpdate(o,
collected: !existing[0].collected
,
new: true
)
.then(function(updated)
console.log('updated ', updated)
return updated;
).catch(function(err)
return err;
)
else if (existing.length && existing[0].vote == 0 && existing[0].favorite == false)
return Collection
.removeAsync(
_id: existing[0]._id
)
.then(function(deleted)
return
message: 'deleted collection'
).catch(function(err)
return err;
)
).catch(function(err)
return err;
)
;
【问题讨论】:
【参考方案1】:我认为最好的选择是使用简单的 REST 模型(PUT
更新文档,DELETE
删除文档)。
然后,如您所说,根据您的条件,从您的客户端调用更新或删除方法。为了改进这个概念,如果无法删除文档,您可以向客户端发送关于 DELETE
事件的否定响应。
【讨论】:
可能是这样,只是看起来不太干。 在某些情况下你必须在 DRY 和 KISS 之间做出选择,我主要是更喜欢 KISS,但这是一个观点。以上是关于有条件地更新/删除后端的文档。我是否该?我是否分配了 PUT、POST 或 DELETE http 方法?的主要内容,如果未能解决你的问题,请参考以下文章