gpt4 book ai didi

node.js - update 与 findByIdAndUpdate 相比是否有 mongoose 性能优势

转载 作者:行者123 更新时间:2023-12-05 03:15:27 24 4
gpt4 key购买 nike

我想通过 put 操作使用 REST api 更新基本的 CRUD 样式。我有一个 coffeescript 基类,其中 @model 是子类中的 Mongoose 模型,如 mongoose.model('Company', schema)。我正在抛出两种执行 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 就不会提示了。这是正常的做法吗?

最佳答案

1) 如果您想取回已更新的文档,使用 Mongoose 的 findByXAndUpdate() 有性能优势。在下面,它使用 mongo 的 findAndModify方法,它可以选择在更新后返回更新后的文档。另一种方法是在更新后执行 find() 以获取文档。返回发布的正文可能不是一个好的做法,因为它来自用户,因此不应该被信任,并且它不会考虑返回允许部分更新的完整文档。

2) 将来自 req.body 的传入数据过滤到您期望的字段绝对是一个好习惯,尤其是当您将它们直接传递到模型的更新函数中时。剥离 _id 似乎是合适的。

关于node.js - update 与 findByIdAndUpdate 相比是否有 mongoose 性能优势,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15994083/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com