我希望通过PUT操作使用REST API更新基本的CRUD样式。 我有一个Coffeescript基类,其中@model是像mongoose.model('Company',schema)这样的mongoose模型在其子类中。 我正在讨论两种进行PUT /更新的方法:
und = require 'underscore'
class CRUDApi
# using findByIdAndUpdate
update1: (req, res) =>
data = und.clone req.body
delete data._id # so mongo doesn't complain
@model.findByIdAndUpdate req.params.id, data, (e, r) ->
res.send r
# using update
update2: (req, res) =>
data = und.clone req.body
delete data._id # so mongo doesn't complain
@model.update { _id: req.params.id }, data, (e, r) ->
res.send req.body
我的问题如下:
1)update和findByIdAndUpdate之间是否有性能差异?语法上,findByIdAndUpdate似乎是更好的选择,特别是因为它将结果以'r'返回,而不仅仅是增量计数,在update2()中使用req.body来“伪造”响应感觉不太好。
2)还有,克隆请求并删除_.id属性以避免mongoose抱怨似乎很尴尬。这是正常的做法吗?