我使用我设置的LoopBack 3 API生成的Angular SDK,但在生成的$save()
上遇到了$resource
方法的问题。此方法映射到upsert
操作,该操作本身映射到patchOrCreate
。问题是在调用$save()
时将整个模型对象发送到PATCH API,包括模型的id
。我使用MongoDB后端,并将idInjection
设置为true,这意味着forceId
也是如此。这会在$save()
上引发以下错误:
请求PATCH / api / Foo的未处理错误?id = 58995169468d951cbf546ce4:ValidationError:
Foo
实例无效。详细信息:id
无法设置(值:58995169468d951cbf546ce4)。
我可以通过将forceId
设置为false来解决此错误,但这会打开安全问题。我还可以通过修改生成的服务文件并向使用PUT而不是PATCH的upsert
添加真实$resource
操作来解决此问题,并修改URL以包含id。这仍会触发有关ID的警告,但它可以正常工作并且不会引发任何错误。但是,编辑生成的代码不是我想要做的事情。
对此有什么正确的解决方案?我想使用$save()
但仍然保持安全性,而不是编辑生成的文件。
答案 0 :(得分:0)
在模型中设置" forceId":false,它将如下所示 { " name":" Product", " base":" PersistedModel", " idInjection":是的, " forceId":false, }
查看更多信息