findByIdAndUpdate中是否存在“受保护”字段的概念?

时间:2018-09-24 04:06:59

标签: mongodb express mongoose

可以说我有一些我不想修改的字段。在我的情况下,我的用户可以利用调用此方法的PATCH请求:

Ad.findByIdAndUpdate(req.params.id, req.body, {new: true})

从技术上讲,我可以“手动”过滤“ req.body”对象,并删除不应该更新的所有内容,即使它们明确发送了请求中的那些字段,但还有更好的方法,也许可以添加“受保护的”在相关架构中标记如下内容:

title: {
    type: String,
    required: true,
    protected: true
}

1 个答案:

答案 0 :(得分:0)

一些担忧:

  • 您是否会验证用户的输入并抛出错误?如果用户发送任意数据,这仍然是正确的请求吗?
  • 如果您不验证,如何消毒?
  • 如果您没有通过验证,为什么不过滤请求?

我强烈建议您进行验证(例如使用json-schema-library),然后对这些值进行清理。最重要的是,您可以使用Monogram禁止更新某些属性。在这种情况下,有效负载中包含意外参数的请求会引发并返回一些错误(例如BAD REQUEST)