当前位置: 首页 > 知识库问答 >
问题:

LoopBack Angular SDK的upsert在补丁中包含ID,导致错误

经清野
2023-03-14

我正在使用从我设置的环回 3 API 生成的 Angular SDK,但在生成的$resource遇到$save() 方法的问题。此方法映射到更新插入操作,该操作本身映射到 patch 或创建。问题在于,在调用 $save() 时,整个模型对象将发送到 PATCH API,包括模型id。我使用的是 MongoDB 后端,并将输入输入设置为 true,这意味着强制 Id 也是真的。这将在 $save() 上引发以下错误:

请求补丁/api/Foo的未处理错误?id=58995169468d951cbf546ce4:验证错误:Foo实例无效。详细信息:id无法设置(值:58995169468d951cbf546ce4)。

我可以通过将< code>forceId设置为false来解决这个错误,但是这样会带来安全问题。我还可以通过修改生成的服务文件并向< code>$resource添加一个真正的< code>upsert操作来解决这个问题,该操作使用PUT而不是PATCH并修改URL以包含id。这仍然会触发一个关于ID的警告,但是它可以工作并且不会抛出任何错误。然而,编辑生成的代码不是我想做的事情。

正确的解决方法是什么?我想使用<code>$save()

共有1个答案

滕学义
2023-03-14

在您的模型中设置“forceId”:false,它将看起来像这样 { “名称”: “产品”, “基础”: “持久模型”, “id输入” : true, “forceId”: false, }

更多信息请访问http://loopback . io/doc/en/lb3/3.0-Release-notes . html # models-with-auto-generated-ids-reject-user-provided-id-values

 类似资料:
  • 问题内容: com.android.volley.NoConnectionError:java.net.ProtocolException:未知方法“ PATCH”;必须是[OPTIONS,GET,HEAD,POST,PUT,DELETE,TRACE]中的一种 问题答案: 您确定使用的Volley Library版本正确吗?我刚刚在Lollipop中尝试了您的代码,它工作正常。如果您将Volley

  • Git 中的一些命令是以引入的变更即提交这样的概念为中心的,这样一系列的提交,就是一系列的补丁。 这些命令以这样的方式来管理你的分支。 git cherry-pick git cherry-pick 命令用来获得在单个提交中引入的变更,然后尝试将作为一个新的提交引入到你当前分支上。 从一个分支单独一个或者两个提交而不是合并整个分支的所有变更是非常有用的。 在 变基与拣选工作流 一节中描述和演示了

  • 首先要说的,这个仅属把补丁打包而安装补丁的过程是通过运行XPLODE.EXE而实现的! 本脚本主要实现可以在安装过程调用Xplode实现马上安装的,另外可以选择重启后安装,就是写入注册实现重启后运行一次的命令!我将补丁放在SEV里面 ,SE2为另外的一些软件也可以。CLEAN.EXE为垃圾清理工具。 目录参考 ├─SEV │ └─SE2 └─TEMP └─ XPLODEREGISTRY.X4E └

  • 我们有一个属性为的文章资源: 标题 图像 描述: __________ 状态:已发布|草稿 如果我们只想删除图像,我们提出请求 如果我们只想更新状态,我们会提出请求 但在这种情况下,图像也将被删除。 如何在REST中只更新一个属性?

  • 如果要筛选列值中包含字符串的行,可以使用类似于(前面回答:检查pandas dataframe列中的字符串是否在列表中,或者检查字符串是否在pandas dataframe中)。 但是,我的查找列包含emtpy单元格。因此,

  • 当我尝试点击具有方法的请求时,我收到以下错误:PATCH 使用JMeter版本:-apache-JMeter-5.4.1 如果我能得到专家的帮助来解决他们的问题,那将会很有帮助。 谢谢