- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想通过 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/
findByIdAndUpdate() 成功更新文档,但返回我不明白的错误。 这是架构: const userSchema = mongoose.Schema({ phone: String,
这个问题在这里已经有了答案: Mongoose: findOneAndUpdate doesn't return updated document (16 个答案) 关闭 5 年前。 所以我有这个
似乎无法理解为什么 findByIdAndUpdate 没有更新数据。我将其更改为 findByIdAndRemove 以查看是否可以发现错误,但是当我更改它时,它确实被删除了,因此我无法找到问题所在
这是我的代码: app.post('/api/scheduleObject_Update', function(req, res) { var parameter = req.para
我正在尝试找到一种一致的方法来验证我保存到数组中的一些 id。 架构: var MySchema = new Schema({ name: { type: String }, otherIds
这是我的架构: var postSchema = new mongoose.Schema({ _id: mongoose.Schema.ObjectId, title: String,
我在下面有一个相当直接的方法来更新基于其 ObjectId 的文档。它不会返回错误,但无法对文档进行所需的更新。我认为它失败了,因为根据我的研究,findByIdAndUpdate() 仅采用纯 Ja
我有一个模式并指定登录是唯一的是真的。当我使用 findByIdAndUpdate 并传递查询 $set 来更新用户对象时,它确实不在登录被复制时抛出错误。有谁知道为什么以及如何更新对象并强制执行架构
我正在尝试使用 mongoose 的 findByIdAndUpdate 方法。当我更新具有 _id 字段集的现有文档时,效果很好。但是,插入一个新文档,使用 upsert: true 插入一个没有生
我是 Mongodb 新手,我正在使用 findByIdAndUpdate 它将更新文档但返回旧文档,这是我的功能, exports.createInner = function (req, res,
因此,当我执行 findByIdAndUpdate 时,它不会按预期执行我的 promise 并进入我的捕获。我使用 res.json(req.user.id) 和 res.json(profil
我的想法很简单,就是从req.body中获取更新值,但是它不能正常工作,mongodb中的数据永远不会改变。 已尝试过 {$set: 电子邮件、密码} const id = { _id: re
我通过创建 API 并在 Angular 2 服务中调用它们,根据 Nodejs 中的 id 更新产品。 routes/products.js router.post('/:id', function
我有一个名为 Message 的 Mongoose 模型,当创建该模型时,我想将消息 Id 保存到另一个名为 User 的模型中的数组中。但是,当调用 findByIdAndUpdate 方法时,它不
findByIdAndUpdate 方法应该更新或插入数据库中的对象,但它不执行任何操作。它也不会抛出错误消息或其他内容。 我也尝试过使用原始的 ObjectId 作为 _id 字段,但也不起作用。
所以我只想更新传递的对象的值。 Event.findByIdAndUpdate(req.body.id, { $set: {
开发 Node.js API。我有显示 field 的 mongo 数据。它包含一个地址,例如...... "address": { "street": "123 main s
我试图在用户点击某个按钮时增加赞成票,并将他的 stormpath 用户 ID (req.user.href) 存储在一个数组中。 尝试 1: if (newUpvoters = found_post
我想知道是否有最好的方法来做到这一点: /** * Article Schema */ var PostSchema = new Schema({ title: { typ
我写了一个更新查询,它将通过 _id 找到记录并更新。这段代码完全可以正常工作,直到我在该集合中添加一条新记录。如果添加一条记录并进行查询,它将转到成功部分但返回 null 而不是数据。但是当我重新启
我是一名优秀的程序员,十分优秀!