繁体   English   中英

有条件地在后端更新/删除文档。我是不是该?我是否分配了PUT,POST或DELETE http方法?

[英]Conditionally updating / deleting a document in backend. Should I? Do I assign a PUT, POST, or DELETE http method?

以下功能用于“收集模型”。

鉴于某些条件,我想要删除或更新文档。

我应该使用PUT还是删除?

我可以将它们分开并检查客户端上的验证/条件,但这似乎更少干。

我将不得不为客户端和服务器添加额外的代码行来实现相同的功能。

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;
        })
    };

我认为最好的选择是使用简单的REST模型( PUT更新文档, DELETE删除文档)。

然后,从您的客户端,您可以根据您的条件调用更新或删除方法,如您所说。 要改进此概念,如果无法删除文档,则可以向客户端发送有关DELETE事件的否定响应。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM