Q:

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

The below function is for a "collection model". 
Given certain conditions, I want to either delete or update the document.  
Should I use a PUT or DELETE?  
I could separate them and check validation / conditions on the client, but that seems less DRY.  
I'll have to add additional lines of code to both the client and server to achieve the same thing.  
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;
        })
    };

A:

I think the best option would be to use the simple REST model (a PUT to update the document and a DELETE to remove the document). 
Then, from your client, you call either the update or the remove method depending on your conditions, as you say.  To improve this concept, you can send a negative response to the client concerning the DELETE event if the document can't be removed.