LoopBack 3 APIから生成されたAngular SDKを使用していますが、$resource
の$save()
メソッドの問題が発生しています。このメソッドはupsert
アクションにマップされ、それ自体はpatchOrCreate
にマップされます。問題はモデルのid
を含む$save()
を呼び出すとき、モデルオブジェクト全体がPATCH APIに送信されることです。私はMongoDBバックエンドを使用しており、idInjection
をtrueに設定しています。つまり、forceId
も真です。これは$save()
に次のエラーがスローされます。LoopBack Angular SDKのアップカウントにPatchのIDが含まれているため、エラーが発生します
Unhandled error for request PATCH /api/Foo?id=58995169468d951cbf546ce4: ValidationError: The
Foo
instance is not valid. Details:id
can't be set (value: 58995169468d951cbf546ce4).
私はfalseにforceId
を設定することで、このエラーを回避することができますが、それはセキュリティ上の問題を開きます。また、生成されたサービスファイルを変更し、実際のupsert
アクションを$resource
に追加して、PATCHの代わりにPUTを使用し、URLを変更してidを組み込むことで回避できます。 IDについての警告は引き続き発生しますが、正常に動作し、エラーは発生しません。しかし、生成されたコードを編集することは私がやりたいことではありません。
これにはどのような解決策がありますか?私はまだ$save()
を使用して、まだ生成されたファイルを編集するのではなく、セキュリティを維持したいと思います。