Angularjs 环回角度SDK';s upsert在修补程序中包含ID,导致错误
我正在使用已设置的环回3 API生成的Angular SDK,但在生成的Angularjs 环回角度SDK';s upsert在修补程序中包含ID,导致错误,angularjs,mongodb,loopbackjs,Angularjs,Mongodb,Loopbackjs,我正在使用已设置的环回3 API生成的Angular SDK,但在生成的$resource上遇到了$save()方法的问题。此方法映射到upsert操作,该操作本身映射到patchOrCreate。问题是,在调用$save()时,整个模型对象被发送到修补程序API,包括模型的id。我使用的是MongoDB后端,将idInjection设置为true,这意味着forceId也是true。这会在$save()上引发以下错误: 请求修补程序/api/Foo?id=58995169468d951cbf5
$resource
上遇到了$save()
方法的问题。此方法映射到upsert
操作,该操作本身映射到patchOrCreate
。问题是,在调用$save()
时,整个模型对象被发送到修补程序API,包括模型的id
。我使用的是MongoDB后端,将idInjection
设置为true,这意味着forceId
也是true。这会在$save()
上引发以下错误:
请求修补程序/api/Foo?id=58995169468d951cbf546ce4的未处理错误:验证错误:Foo
实例无效。详细信息:id
无法设置(值:58995169468d951cbf546ce4)
我可以通过将forceId
设置为false来绕过此错误,但这会带来安全问题。我还可以通过修改生成的服务文件并向$resource
添加一个真正的upsert
操作来解决这个问题,该操作使用PUT而不是PATCH,并修改URL以包含id。这仍然会触发关于id的警告,但它可以工作,并且不会引发任何错误。然而,编辑生成的代码并不是我想做的事情
正确的解决方法是什么?我想使用$save()
,但仍然保持安全性,同时不编辑生成的文件。在模型中设置“forceId”:false,它将如下所示
{
“名称”:“产品”,
“基”:“PersistedModel”,
“注射”:对,
“forceId”:假,
}
有关更多信息,请访问