首页 > 解决方案 > Loopback validateUpsert 设置为 false 不起作用,仍然运行验证

问题描述

我有一个这样的环回模型集:

{
  "name": "MyModel",
  "plural": "MyModels",
  "base": "User",
  "idInjection": false,
  "options": {
    "validateUpsert": false
  },
...
}

使用CREATEorPOST时,它运行良好,运行所有验证等,当然应该这样做。但是,如果我使用PATCH /MyModels/{id},仅传递 JSON 数据中的一个属性(因为我只想更新该特定属性值),我希望它不会对我未通过的属性运行验证。

因为它在这里说: https://loopback.io/doc/en/lb3/Model-definition-JSON-file.html#advanced-options 如果您设置validateUpsert为 false,upsert则不会运行验证。

它在这里说: https://loopback.io/doc/en/lb3/Controlling-data-access.html#comprehensive-accesstype-property-and-end-pointPATCH /MyModels/{id}对应updateAttributesPATCH /MyModels对应于upsert.

所以我希望它不会对我没有传入PATCH方法的属性进行验证。但它仍然存在。它甚至仍然进行presence验证。

我如何使用PATCHloopback只会忽略(不验证和不更新)我没有通过的属性?

我目前正在使用loopback ^3.0.0.

谢谢!:)

标签: javascriptnode.jsvalidationloopbackjsloopback

解决方案


您可以使用 put 方法并仅传递要更新的字段:

例如 /MyModels/{id}

这里 id 是行的唯一标识符,并像这样传递正文:

{“名称”:“新名称”}

在这种情况下,只会验证和更新名称值。其他字段保持不变。


推荐阅读