@loopback/docs 4.0.4 → 5.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +16 -0
- package/package.json +6 -6
- package/site/CHANGELOG.md +1 -0
- package/site/MONOREPO.md +1 -0
- package/site/Polymorphic-relations.md +123 -0
- package/site/ReferencesMany-relation.md +379 -0
- package/site/Relation-generator.md +1 -0
- package/site/Relations.md +1 -0
- package/site/apidocs/apiconnect.apiconnectspecenhancer._constructor_.md +1 -1
- package/site/apidocs/authentication-jwt.myuserservice.md +1 -1
- package/site/apidocs/authentication-jwt.refreshtoken._constructor_.md +1 -1
- package/site/apidocs/authentication-jwt.refreshtokenrepository.md +1 -1
- package/site/apidocs/authentication-jwt.user._constructor_.md +1 -1
- package/site/apidocs/authentication-jwt.usercredentials._constructor_.md +1 -1
- package/site/apidocs/authentication-jwt.usercredentialsrepository.md +1 -1
- package/site/apidocs/authentication-jwt.userrepository.md +1 -1
- package/site/apidocs/authentication-passport.strategyadapter._constructor_.md +1 -1
- package/site/apidocs/authentication-passport.strategyadapter.authenticate.md +1 -1
- package/site/apidocs/authentication.authenticateactionprovider._constructor_.md +1 -1
- package/site/apidocs/authentication.authenticateactionprovider.md +1 -1
- package/site/apidocs/authentication.authenticationmiddlewareprovider.md +1 -1
- package/site/apidocs/authentication.authenticationstrategyprovider._constructor_.md +1 -1
- package/site/apidocs/authentication.authenticationstrategyprovider.md +1 -1
- package/site/apidocs/authentication.authmetadataprovider._constructor_.md +1 -1
- package/site/apidocs/authentication.authmetadataprovider.md +1 -1
- package/site/apidocs/authorization.authorizationinterceptor._constructor_.md +1 -1
- package/site/apidocs/authorization.authorizationinterceptor.md +1 -1
- package/site/apidocs/authorization.authorizemethoddecoratorfactory.md +1 -1
- package/site/apidocs/authorization.authorizemethoddecoratorfactory.mergewithown.md +2 -2
- package/site/apidocs/boot.bootstrapper._constructor_.md +1 -1
- package/site/apidocs/boot.bootstrapper.boot.md +2 -2
- package/site/apidocs/boot.controllerbooter._constructor_.md +1 -1
- package/site/apidocs/boot.createbooterforcomponentapplication.md +1 -1
- package/site/apidocs/boot.createcomponentapplicationbooterbinding.md +1 -1
- package/site/apidocs/boot.datasourcebooter._constructor_.md +1 -1
- package/site/apidocs/boot.interceptorproviderbooter._constructor_.md +1 -1
- package/site/apidocs/boot.lifecycleobserverbooter._constructor_.md +1 -1
- package/site/apidocs/boot.modelapibooter._constructor_.md +1 -1
- package/site/apidocs/boot.modelbooter._constructor_.md +1 -1
- package/site/apidocs/boot.repositorybooter._constructor_.md +1 -1
- package/site/apidocs/boot.servicebooter._constructor_.md +1 -1
- package/site/apidocs/context-explorer.contextexplorercomponent._constructor_.md +1 -1
- package/site/apidocs/context-explorer.contextgraph._constructor_.md +1 -1
- package/site/apidocs/context-explorer.rendergraph.md +1 -1
- package/site/apidocs/context.asglobalinterceptor.md +1 -1
- package/site/apidocs/context.asresolutionoptions.md +1 -1
- package/site/apidocs/context.asserttargettype.md +1 -1
- package/site/apidocs/context.binding._constructor_.md +1 -1
- package/site/apidocs/context.binding.getvalue.md +1 -1
- package/site/apidocs/context.binding.getvalue_1.md +1 -1
- package/site/apidocs/context.binding.inspect.md +1 -1
- package/site/apidocs/context.bindingkey.buildkeyforconfig.md +1 -1
- package/site/apidocs/context.bindingkey.create.md +1 -1
- package/site/apidocs/context.bindingkey.generate.md +1 -1
- package/site/apidocs/context.bindingtemplatefor.md +1 -1
- package/site/apidocs/context.comparebindingsbytag.md +2 -2
- package/site/apidocs/context.comparebyorder.md +1 -1
- package/site/apidocs/context.configbindingkeyfor.md +1 -1
- package/site/apidocs/context.configurationresolver.getconfigasvalueorpromise.md +2 -2
- package/site/apidocs/context.context._constructor_.md +2 -2
- package/site/apidocs/context.context._mergewithparent.md +1 -1
- package/site/apidocs/context.context.configure.md +1 -1
- package/site/apidocs/context.context.createview.md +2 -2
- package/site/apidocs/context.context.find.md +1 -1
- package/site/apidocs/context.context.findorcreatebinding.md +1 -1
- package/site/apidocs/context.context.get.md +1 -1
- package/site/apidocs/context.context.getbinding_1.md +1 -1
- package/site/apidocs/context.context.getconfig.md +2 -2
- package/site/apidocs/context.context.getconfigasvalueorpromise.md +2 -2
- package/site/apidocs/context.context.getconfigsync.md +2 -2
- package/site/apidocs/context.context.getsync.md +1 -1
- package/site/apidocs/context.context.getsync_1.md +1 -1
- package/site/apidocs/context.context.inspect.md +1 -1
- package/site/apidocs/context.contextsubscriptionmanager.notifyobservers.md +1 -1
- package/site/apidocs/context.contextsubscriptionmanager.waituntilpendingnotificationsdone.md +1 -1
- package/site/apidocs/context.contextview._constructor_.md +2 -2
- package/site/apidocs/context.contextview.asgetter.md +1 -1
- package/site/apidocs/context.contextview.resolve.md +1 -1
- package/site/apidocs/context.contextview.singlevalue.md +1 -1
- package/site/apidocs/context.contextview.values.md +1 -1
- package/site/apidocs/context.createbindingfromclass.md +1 -1
- package/site/apidocs/context.createproxywithinterceptors.md +3 -3
- package/site/apidocs/context.createviewgetter.md +1 -1
- package/site/apidocs/context.createviewgetter_1.md +2 -2
- package/site/apidocs/context.defaultconfigurationresolver.getconfigasvalueorpromise.md +2 -2
- package/site/apidocs/context.describeinjectedarguments.md +1 -1
- package/site/apidocs/context.filterbykey.md +1 -1
- package/site/apidocs/context.genericinterceptorchain._constructor__1.md +1 -1
- package/site/apidocs/context.genericinterceptorchain.invokeinterceptors.md +1 -1
- package/site/apidocs/context.globalinterceptor.md +1 -1
- package/site/apidocs/context.injectionmetadata.md +1 -1
- package/site/apidocs/context.instantiateclass.md +2 -2
- package/site/apidocs/context.interceptionhandler._constructor_.md +3 -3
- package/site/apidocs/context.interceptionhandler.md +1 -1
- package/site/apidocs/context.interceptor.md +1 -1
- package/site/apidocs/context.invocationcontext._constructor_.md +1 -1
- package/site/apidocs/context.invocationcontext.invoketargetmethod.md +1 -1
- package/site/apidocs/context.invokemethod.md +2 -2
- package/site/apidocs/context.invokemethodwithinterceptors.md +1 -1
- package/site/apidocs/context.isbindingtagfilter.md +1 -1
- package/site/apidocs/context.jsonarray.md +1 -1
- package/site/apidocs/context.jsonobject.md +1 -1
- package/site/apidocs/context.proxysource.md +1 -1
- package/site/apidocs/context.registerinterceptor.md +1 -1
- package/site/apidocs/context.resolutionsession.fork.md +1 -1
- package/site/apidocs/context.resolutionsession.runwithbinding.md +1 -1
- package/site/apidocs/context.resolutionsession.runwithinjection.md +1 -1
- package/site/apidocs/context.resolveinjectedarguments.md +2 -2
- package/site/apidocs/context.resolveinjectedproperties.md +1 -1
- package/site/apidocs/context.sortbindingsbyphase.md +2 -2
- package/site/apidocs/context.trycatchfinally.md +2 -2
- package/site/apidocs/core.addextension.md +1 -1
- package/site/apidocs/core.application._constructor__1.md +2 -2
- package/site/apidocs/core.application.component.md +1 -1
- package/site/apidocs/core.application.controller.md +1 -1
- package/site/apidocs/core.application.interceptor.md +1 -1
- package/site/apidocs/core.application.lifecycleobserver.md +1 -1
- package/site/apidocs/core.application.server.md +1 -1
- package/site/apidocs/core.application.service.md +1 -1
- package/site/apidocs/core.createservicebinding.md +1 -1
- package/site/apidocs/core.extensions.list.md +2 -2
- package/site/apidocs/core.extensions.view.md +2 -2
- package/site/apidocs/core.lifecycleobserverregistry._constructor_.md +1 -1
- package/site/apidocs/core.lifecycleobserverregistry.notifygroups.md +1 -1
- package/site/apidocs/core.service.md +2 -2
- package/site/apidocs/express.asmiddleware.md +1 -1
- package/site/apidocs/express.buildname.md +2 -2
- package/site/apidocs/express.createinterceptor.md +1 -1
- package/site/apidocs/express.createmiddleware.md +1 -1
- package/site/apidocs/express.createmiddlewarebinding.md +1 -1
- package/site/apidocs/express.createmiddlewareinterceptorbinding.md +1 -1
- package/site/apidocs/express.defineinterceptorprovider.md +2 -2
- package/site/apidocs/express.expressapplication._constructor_.md +1 -1
- package/site/apidocs/express.expressmiddlewareinterceptorprovider._constructor_.md +1 -1
- package/site/apidocs/express.expressmiddlewareinterceptorprovider.md +1 -1
- package/site/apidocs/express.expressserver._constructor_.md +2 -2
- package/site/apidocs/express.getmiddlewarecontext.md +1 -1
- package/site/apidocs/express.invokemiddlewareprovider.action.md +1 -1
- package/site/apidocs/express.invokemiddlewareprovider.value.md +1 -1
- package/site/apidocs/express.middleware.md +1 -1
- package/site/apidocs/express.middlewarebindingoptions.md +1 -1
- package/site/apidocs/express.middlewarechain.md +1 -1
- package/site/apidocs/express.middlewarecontext._constructor_.md +2 -2
- package/site/apidocs/express.middlewareinterceptorbindingoptions.md +1 -1
- package/site/apidocs/express.middlewareregistry.expressmiddleware.md +1 -1
- package/site/apidocs/express.middlewareregistry.expressmiddleware_1.md +2 -2
- package/site/apidocs/express.middlewareregistry.middleware.md +1 -1
- package/site/apidocs/express.middlewareview._constructor_.md +1 -1
- package/site/apidocs/express.registerexpressmiddleware.md +2 -2
- package/site/apidocs/express.registerexpressmiddlewareinterceptor.md +2 -2
- package/site/apidocs/filter.filterbuilder._constructor_.md +1 -1
- package/site/apidocs/filter.inclusion.md +1 -0
- package/site/apidocs/filter.inclusion.targettype.md +21 -0
- package/site/apidocs/filter.wherebuilder._constructor_.md +1 -1
- package/site/apidocs/filter.wherebuilder.exists.md +1 -1
- package/site/apidocs/graphql.graphqlserver._constructor_.md +2 -2
- package/site/apidocs/graphql.graphqlserver.exportgraphqlschema.md +2 -2
- package/site/apidocs/graphql.graphqlserver.resolver.md +1 -1
- package/site/apidocs/graphql.registerresolver.md +1 -1
- package/site/apidocs/health.healthcomponent._constructor_.md +1 -1
- package/site/apidocs/http-server.basehttpoptions.md +1 -1
- package/site/apidocs/http-server.httpserver._constructor_.md +1 -1
- package/site/apidocs/logging.winstonloggerprovider._constructor_.md +1 -1
- package/site/apidocs/logging.winstonloggerprovider.md +1 -1
- package/site/apidocs/metadata.classdecoratorfactory.createdecorator.md +1 -1
- package/site/apidocs/metadata.classdecoratorfactory.md +1 -1
- package/site/apidocs/metadata.classdecoratorfactory.mergewithinherited.md +2 -2
- package/site/apidocs/metadata.classdecoratorfactory.mergewithown.md +2 -2
- package/site/apidocs/metadata.decoratorfactory._constructor_.md +1 -1
- package/site/apidocs/metadata.decoratorfactory._createdecorator.md +1 -1
- package/site/apidocs/metadata.decoratorfactory.decorate.md +2 -2
- package/site/apidocs/metadata.decoratorfactory.duplicatedecorationerror.md +2 -2
- package/site/apidocs/metadata.decoratorfactory.getnumberofparameters.md +1 -1
- package/site/apidocs/metadata.decoratorfactory.gettargetname.md +2 -2
- package/site/apidocs/metadata.decoratorfactory.mergewithinherited.md +2 -2
- package/site/apidocs/metadata.decoratorfactory.mergewithown.md +2 -2
- package/site/apidocs/metadata.metadatainspector.definemetadata.md +1 -1
- package/site/apidocs/metadata.metadatainspector.getallmethodmetadata.md +1 -1
- package/site/apidocs/metadata.metadatainspector.getallparametermetadata.md +2 -2
- package/site/apidocs/metadata.metadatainspector.getallpropertymetadata.md +1 -1
- package/site/apidocs/metadata.metadatainspector.getclassmetadata.md +1 -1
- package/site/apidocs/metadata.metadatainspector.getmethodmetadata.md +2 -2
- package/site/apidocs/metadata.metadatainspector.getparametermetadata.md +1 -1
- package/site/apidocs/metadata.metadatainspector.getpropertymetadata.md +1 -1
- package/site/apidocs/metadata.methoddecoratorfactory.createdecorator.md +1 -1
- package/site/apidocs/metadata.methoddecoratorfactory.md +1 -1
- package/site/apidocs/metadata.methoddecoratorfactory.mergewithinherited.md +2 -2
- package/site/apidocs/metadata.methoddecoratorfactory.mergewithown.md +2 -2
- package/site/apidocs/metadata.methodmultidecoratorfactory.md +1 -1
- package/site/apidocs/metadata.methodmultidecoratorfactory.mergewithinherited.md +1 -1
- package/site/apidocs/metadata.methodmultidecoratorfactory.mergewithown.md +2 -2
- package/site/apidocs/metadata.methodparameterdecoratorfactory.createdecorator.md +1 -1
- package/site/apidocs/metadata.methodparameterdecoratorfactory.md +1 -1
- package/site/apidocs/metadata.methodparameterdecoratorfactory.mergewithinherited.md +2 -2
- package/site/apidocs/metadata.methodparameterdecoratorfactory.mergewithown.md +2 -2
- package/site/apidocs/metadata.namespacedreflect._constructor_.md +1 -1
- package/site/apidocs/metadata.namespacedreflect.decorate.md +2 -2
- package/site/apidocs/metadata.namespacedreflect.definemetadata.md +1 -1
- package/site/apidocs/metadata.namespacedreflect.deletemetadata.md +1 -1
- package/site/apidocs/metadata.namespacedreflect.getmetadata.md +1 -1
- package/site/apidocs/metadata.namespacedreflect.getmetadatakeys.md +1 -1
- package/site/apidocs/metadata.namespacedreflect.getownmetadata.md +1 -1
- package/site/apidocs/metadata.namespacedreflect.getownmetadatakeys.md +1 -1
- package/site/apidocs/metadata.namespacedreflect.hasmetadata.md +1 -1
- package/site/apidocs/metadata.namespacedreflect.hasownmetadata.md +1 -1
- package/site/apidocs/metadata.parameterdecoratorfactory.createdecorator.md +1 -1
- package/site/apidocs/metadata.parameterdecoratorfactory.md +1 -1
- package/site/apidocs/metadata.parameterdecoratorfactory.mergewithinherited.md +2 -2
- package/site/apidocs/metadata.parameterdecoratorfactory.mergewithown.md +2 -2
- package/site/apidocs/metadata.propertydecoratorfactory.createdecorator.md +1 -1
- package/site/apidocs/metadata.propertydecoratorfactory.md +1 -1
- package/site/apidocs/metadata.propertydecoratorfactory.mergewithinherited.md +2 -2
- package/site/apidocs/metadata.propertydecoratorfactory.mergewithown.md +2 -2
- package/site/apidocs/metrics.metricscomponent._constructor_.md +1 -1
- package/site/apidocs/openapi-spec-builder.componentsspecbuilder.md +1 -1
- package/site/apidocs/openapi-spec-builder.openapispecbuilder.md +1 -1
- package/site/apidocs/openapi-spec-builder.openapispecbuilder.withoperationreturningstring.md +1 -1
- package/site/apidocs/openapi-spec-builder.operationspecbuilder.md +1 -1
- package/site/apidocs/openapi-spec-builder.operationspecbuilder.withstringresponse.md +1 -1
- package/site/apidocs/openapi-v3.del.md +1 -1
- package/site/apidocs/openapi-v3.deprecated.md +1 -1
- package/site/apidocs/openapi-v3.get.md +1 -1
- package/site/apidocs/openapi-v3.getfilterschemafor.md +1 -1
- package/site/apidocs/openapi-v3.getmodelschemaref.md +1 -1
- package/site/apidocs/openapi-v3.jsontoschemaobject.md +1 -1
- package/site/apidocs/openapi-v3.oasenhancerservice._constructor_.md +1 -1
- package/site/apidocs/openapi-v3.oasenhancerservice.applyallenhancers.md +1 -1
- package/site/apidocs/openapi-v3.operation.md +1 -1
- package/site/apidocs/openapi-v3.param.filter.md +1 -1
- package/site/apidocs/openapi-v3.param.where.md +1 -1
- package/site/apidocs/openapi-v3.patch.md +1 -1
- package/site/apidocs/openapi-v3.post.md +1 -1
- package/site/apidocs/openapi-v3.put.md +1 -1
- package/site/apidocs/pooling.getpooledvalue.md +1 -1
- package/site/apidocs/pooling.poolfactory.md +1 -1
- package/site/apidocs/pooling.poolingservice.acquire.md +1 -1
- package/site/apidocs/pooling.poolingservice.run.md +1 -1
- package/site/apidocs/repository-json-schema.getfieldsjsonschemafor.md +1 -1
- package/site/apidocs/repository-json-schema.getfilterjsonschemafor.md +1 -1
- package/site/apidocs/repository-json-schema.getjsonschema.md +1 -1
- package/site/apidocs/repository-json-schema.getjsonschemaref.md +1 -1
- package/site/apidocs/repository-json-schema.getscopefilterjsonschemafor.md +1 -1
- package/site/apidocs/repository-json-schema.getwherejsonschemafor.md +1 -1
- package/site/apidocs/repository-json-schema.modeltojsonschema.md +1 -1
- package/site/apidocs/repository.anytype.md +1 -1
- package/site/apidocs/repository.applicationwithrepositories.component.md +1 -1
- package/site/apidocs/repository.applicationwithrepositories.datasource.md +1 -1
- package/site/apidocs/repository.applicationwithrepositories.migrateschema.md +1 -1
- package/site/apidocs/repository.applicationwithrepositories.repository.md +1 -1
- package/site/apidocs/repository.arraytype.md +1 -1
- package/site/apidocs/repository.belongsto.md +2 -2
- package/site/apidocs/repository.belongstodefinition.md +1 -0
- package/site/apidocs/repository.belongstodefinition.polymorphic.md +25 -0
- package/site/apidocs/repository.belongstorepository.get.md +4 -2
- package/site/apidocs/repository.booleantype.md +1 -1
- package/site/apidocs/repository.buffertype.coerce.md +1 -1
- package/site/apidocs/repository.buffertype.md +1 -1
- package/site/apidocs/repository.buffertype.serialize.md +1 -1
- package/site/apidocs/repository.buildmodeldefinition.md +1 -1
- package/site/apidocs/repository.connector.execute.md +1 -1
- package/site/apidocs/repository.createbelongstoaccessor.md +5 -3
- package/site/apidocs/repository.createbelongstoinclusionresolver.md +4 -2
- package/site/apidocs/repository.createhasmanythroughrepositoryfactory.md +4 -2
- package/site/apidocs/repository.createhasonerepositoryfactory.md +6 -2
- package/site/apidocs/repository.createreferencesmanyaccessor.md +36 -0
- package/site/apidocs/repository.createreferencesmanyinclusionresolver.md +37 -0
- package/site/apidocs/repository.crudconnector.count.md +2 -2
- package/site/apidocs/repository.crudconnector.create.md +1 -1
- package/site/apidocs/repository.crudconnector.createall.md +1 -1
- package/site/apidocs/repository.crudconnector.delete.md +1 -1
- package/site/apidocs/repository.crudconnector.deleteall.md +2 -2
- package/site/apidocs/repository.crudconnector.deletebyid.md +1 -1
- package/site/apidocs/repository.crudconnector.exists.md +1 -1
- package/site/apidocs/repository.crudconnector.find.md +2 -2
- package/site/apidocs/repository.crudconnector.findbyid.md +1 -1
- package/site/apidocs/repository.crudconnector.replacebyid.md +1 -1
- package/site/apidocs/repository.crudconnector.save.md +1 -1
- package/site/apidocs/repository.crudconnector.update.md +1 -1
- package/site/apidocs/repository.crudconnector.updateall.md +2 -2
- package/site/apidocs/repository.crudconnector.updatebyid.md +1 -1
- package/site/apidocs/repository.crudrepository.count.md +2 -2
- package/site/apidocs/repository.crudrepository.create.md +1 -1
- package/site/apidocs/repository.crudrepository.createall.md +1 -1
- package/site/apidocs/repository.crudrepository.deleteall.md +2 -2
- package/site/apidocs/repository.crudrepository.find.md +2 -2
- package/site/apidocs/repository.crudrepository.md +1 -1
- package/site/apidocs/repository.crudrepository.updateall.md +2 -2
- package/site/apidocs/repository.crudrepositoryimpl.count.md +2 -2
- package/site/apidocs/repository.crudrepositoryimpl.create.md +1 -1
- package/site/apidocs/repository.crudrepositoryimpl.createall.md +1 -1
- package/site/apidocs/repository.crudrepositoryimpl.delete.md +1 -1
- package/site/apidocs/repository.crudrepositoryimpl.deleteall.md +2 -2
- package/site/apidocs/repository.crudrepositoryimpl.deletebyid.md +1 -1
- package/site/apidocs/repository.crudrepositoryimpl.execute.md +1 -1
- package/site/apidocs/repository.crudrepositoryimpl.exists.md +1 -1
- package/site/apidocs/repository.crudrepositoryimpl.find.md +2 -2
- package/site/apidocs/repository.crudrepositoryimpl.findbyid.md +2 -2
- package/site/apidocs/repository.crudrepositoryimpl.md +1 -1
- package/site/apidocs/repository.crudrepositoryimpl.replacebyid.md +1 -1
- package/site/apidocs/repository.crudrepositoryimpl.save.md +1 -1
- package/site/apidocs/repository.crudrepositoryimpl.update.md +1 -1
- package/site/apidocs/repository.crudrepositoryimpl.updateall.md +2 -2
- package/site/apidocs/repository.crudrepositoryimpl.updatebyid.md +1 -1
- package/site/apidocs/repository.datetype.md +1 -1
- package/site/apidocs/repository.defaultbelongstorepository._constructor_.md +5 -2
- package/site/apidocs/repository.defaultbelongstorepository.get.md +4 -2
- package/site/apidocs/repository.defaultbelongstorepository.gettargetrepository.md +3 -1
- package/site/apidocs/repository.defaultbelongstorepository.gettargetrepositorydict.md +23 -0
- package/site/apidocs/repository.defaultbelongstorepository.md +5 -3
- package/site/apidocs/repository.defaultbelongstorepository.targetresolver.md +21 -0
- package/site/apidocs/repository.defaultcrudrepository._createbelongstoaccessorfor.md +4 -2
- package/site/apidocs/repository.defaultcrudrepository._createhasmanyrepositoryfactoryfor.md +2 -2
- package/site/apidocs/repository.defaultcrudrepository._createhasonerepositoryfactoryfor.md +4 -2
- package/site/apidocs/repository.defaultcrudrepository._createreferencesmanyaccessorfor.md +40 -0
- package/site/apidocs/repository.defaultcrudrepository.count.md +2 -2
- package/site/apidocs/repository.defaultcrudrepository.create.md +1 -1
- package/site/apidocs/repository.defaultcrudrepository.createall.md +1 -1
- package/site/apidocs/repository.defaultcrudrepository.createbelongstoaccessorfor.md +4 -2
- package/site/apidocs/repository.defaultcrudrepository.createhasmanyrepositoryfactoryfor.md +2 -2
- package/site/apidocs/repository.defaultcrudrepository.createhasmanythroughrepositoryfactoryfor.md +5 -3
- package/site/apidocs/repository.defaultcrudrepository.createhasonerepositoryfactoryfor.md +4 -2
- package/site/apidocs/repository.defaultcrudrepository.createreferencesmanyaccessorfor.md +35 -0
- package/site/apidocs/repository.defaultcrudrepository.delete.md +1 -1
- package/site/apidocs/repository.defaultcrudrepository.deleteall.md +2 -2
- package/site/apidocs/repository.defaultcrudrepository.deletebyid.md +1 -1
- package/site/apidocs/repository.defaultcrudrepository.ensurepersistable.md +1 -1
- package/site/apidocs/repository.defaultcrudrepository.entitytodata.md +1 -1
- package/site/apidocs/repository.defaultcrudrepository.execute.md +1 -1
- package/site/apidocs/repository.defaultcrudrepository.exists.md +1 -1
- package/site/apidocs/repository.defaultcrudrepository.find.md +2 -2
- package/site/apidocs/repository.defaultcrudrepository.findbyid.md +2 -2
- package/site/apidocs/repository.defaultcrudrepository.findone.md +2 -2
- package/site/apidocs/repository.defaultcrudrepository.includerelatedmodels.md +2 -2
- package/site/apidocs/repository.defaultcrudrepository.md +10 -8
- package/site/apidocs/repository.defaultcrudrepository.normalizefilter.md +1 -1
- package/site/apidocs/repository.defaultcrudrepository.replacebyid.md +1 -1
- package/site/apidocs/repository.defaultcrudrepository.save.md +1 -1
- package/site/apidocs/repository.defaultcrudrepository.update.md +1 -1
- package/site/apidocs/repository.defaultcrudrepository.updateall.md +2 -2
- package/site/apidocs/repository.defaultcrudrepository.updatebyid.md +1 -1
- package/site/apidocs/repository.defaulthasmanyrepository.create.md +1 -1
- package/site/apidocs/repository.defaulthasmanyrepository.delete.md +2 -2
- package/site/apidocs/repository.defaulthasmanyrepository.find.md +2 -2
- package/site/apidocs/repository.defaulthasmanyrepository.md +1 -1
- package/site/apidocs/repository.defaulthasmanyrepository.patch.md +2 -2
- package/site/apidocs/repository.defaulthasmanythroughrepository._constructor_.md +6 -2
- package/site/apidocs/repository.defaulthasmanythroughrepository.create.md +3 -1
- package/site/apidocs/repository.defaulthasmanythroughrepository.delete.md +7 -3
- package/site/apidocs/repository.defaulthasmanythroughrepository.find.md +7 -3
- package/site/apidocs/repository.defaulthasmanythroughrepository.gettargetrepository.md +3 -1
- package/site/apidocs/repository.defaulthasmanythroughrepository.gettargetrepositorydict.md +23 -0
- package/site/apidocs/repository.defaulthasmanythroughrepository.link.md +1 -1
- package/site/apidocs/repository.defaulthasmanythroughrepository.md +6 -3
- package/site/apidocs/repository.defaulthasmanythroughrepository.patch.md +11 -5
- package/site/apidocs/repository.defaulthasmanythroughrepository.targetresolver.md +21 -0
- package/site/apidocs/repository.defaulthasmanythroughrepository.throughresolver.md +21 -0
- package/site/apidocs/repository.defaulthasmanythroughrepository.unlink.md +1 -1
- package/site/apidocs/repository.defaulthasmanythroughrepository.unlinkall.md +1 -1
- package/site/apidocs/repository.defaulthasonerepository._constructor_.md +5 -2
- package/site/apidocs/repository.defaulthasonerepository.create.md +4 -2
- package/site/apidocs/repository.defaulthasonerepository.delete.md +4 -2
- package/site/apidocs/repository.defaulthasonerepository.get.md +5 -3
- package/site/apidocs/repository.defaulthasonerepository.gettargetrepository.md +3 -1
- package/site/apidocs/repository.defaulthasonerepository.gettargetrepositorydict.md +23 -0
- package/site/apidocs/repository.defaulthasonerepository.md +5 -3
- package/site/apidocs/repository.defaulthasonerepository.patch.md +7 -3
- package/site/apidocs/repository.defaulthasonerepository.targetresolver.md +21 -0
- package/site/apidocs/repository.defaultkeyvaluerepository.delete.md +1 -1
- package/site/apidocs/repository.defaultkeyvaluerepository.deleteall.md +1 -1
- package/site/apidocs/repository.defaultkeyvaluerepository.expire.md +1 -1
- package/site/apidocs/repository.defaultkeyvaluerepository.get.md +1 -1
- package/site/apidocs/repository.defaultkeyvaluerepository.keys.md +2 -2
- package/site/apidocs/repository.defaultkeyvaluerepository.md +1 -1
- package/site/apidocs/repository.defaultkeyvaluerepository.set.md +1 -1
- package/site/apidocs/repository.defaultkeyvaluerepository.ttl.md +1 -1
- package/site/apidocs/repository.defaultreferencesmanyrepository._constructor_.md +31 -0
- package/site/apidocs/repository.defaultreferencesmanyrepository.constraint.md +21 -0
- package/site/apidocs/repository.defaultreferencesmanyrepository.get.md +32 -0
- package/site/apidocs/repository.defaultreferencesmanyrepository.gettargetrepository.md +21 -0
- package/site/apidocs/repository.defaultreferencesmanyrepository.md +42 -0
- package/site/apidocs/repository.defaulttransactionalrepository.begintransaction.md +1 -1
- package/site/apidocs/repository.defaulttransactionalrepository.md +2 -2
- package/site/apidocs/repository.embedsmany.md +1 -1
- package/site/apidocs/repository.embedsone.md +1 -1
- package/site/apidocs/repository.entitycrudrepository.delete.md +1 -1
- package/site/apidocs/repository.entitycrudrepository.deletebyid.md +1 -1
- package/site/apidocs/repository.entitycrudrepository.exists.md +1 -1
- package/site/apidocs/repository.entitycrudrepository.findbyid.md +2 -2
- package/site/apidocs/repository.entitycrudrepository.md +1 -1
- package/site/apidocs/repository.entitycrudrepository.replacebyid.md +1 -1
- package/site/apidocs/repository.entitycrudrepository.save.md +1 -1
- package/site/apidocs/repository.entitycrudrepository.update.md +1 -1
- package/site/apidocs/repository.entitycrudrepository.updatebyid.md +1 -1
- package/site/apidocs/repository.entitynotfounderror._constructor_.md +1 -1
- package/site/apidocs/repository.entityrepository.md +1 -1
- package/site/apidocs/repository.executablerepository.execute.md +1 -1
- package/site/apidocs/repository.executablerepository.md +1 -1
- package/site/apidocs/repository.findbyforeignkeys.md +2 -2
- package/site/apidocs/repository.hasmany.md +1 -1
- package/site/apidocs/repository.hasmanydefinition.md +1 -1
- package/site/apidocs/repository.hasmanydefinition.through.md +3 -0
- package/site/apidocs/repository.hasmanyrepository.create.md +1 -1
- package/site/apidocs/repository.hasmanyrepository.delete.md +2 -2
- package/site/apidocs/repository.hasmanyrepository.find.md +2 -2
- package/site/apidocs/repository.hasmanyrepository.patch.md +2 -2
- package/site/apidocs/repository.hasmanythroughrepository.create.md +3 -1
- package/site/apidocs/repository.hasmanythroughrepository.delete.md +7 -3
- package/site/apidocs/repository.hasmanythroughrepository.find.md +7 -3
- package/site/apidocs/repository.hasmanythroughrepository.link.md +1 -1
- package/site/apidocs/repository.hasmanythroughrepository.patch.md +11 -5
- package/site/apidocs/repository.hasmanythroughrepository.unlink.md +1 -1
- package/site/apidocs/repository.hasmanythroughrepository.unlinkall.md +1 -1
- package/site/apidocs/repository.hasone.md +1 -1
- package/site/apidocs/repository.hasonedefinition.md +1 -0
- package/site/apidocs/repository.hasonedefinition.polymorphic.md +25 -0
- package/site/apidocs/repository.hasonerepository.create.md +4 -2
- package/site/apidocs/repository.hasonerepository.delete.md +4 -2
- package/site/apidocs/repository.hasonerepository.get.md +5 -3
- package/site/apidocs/repository.hasonerepository.patch.md +7 -3
- package/site/apidocs/repository.includefieldifnot.md +33 -0
- package/site/apidocs/repository.includerelatedmodels.md +2 -2
- package/site/apidocs/repository.invalidpolymorphismerror._constructor_.md +32 -0
- package/site/apidocs/repository.invalidpolymorphismerror.code.md +21 -0
- package/site/apidocs/repository.invalidpolymorphismerror.md +35 -0
- package/site/apidocs/repository.invalidrelationerror._constructor_.md +1 -1
- package/site/apidocs/repository.isinvalidpolymorphismerror.md +32 -0
- package/site/apidocs/repository.keyvaluerepository.delete.md +1 -1
- package/site/apidocs/repository.keyvaluerepository.deleteall.md +1 -1
- package/site/apidocs/repository.keyvaluerepository.expire.md +1 -1
- package/site/apidocs/repository.keyvaluerepository.get.md +1 -1
- package/site/apidocs/repository.keyvaluerepository.keys.md +2 -2
- package/site/apidocs/repository.keyvaluerepository.md +1 -1
- package/site/apidocs/repository.keyvaluerepository.set.md +1 -1
- package/site/apidocs/repository.keyvaluerepository.ttl.md +1 -1
- package/site/apidocs/repository.kvconnector.delete.md +1 -1
- package/site/apidocs/repository.kvconnector.deleteall.md +1 -1
- package/site/apidocs/repository.kvconnector.expire.md +1 -1
- package/site/apidocs/repository.kvconnector.get.md +1 -1
- package/site/apidocs/repository.kvconnector.iteratekeys.md +2 -2
- package/site/apidocs/repository.kvconnector.keys.md +1 -1
- package/site/apidocs/repository.kvconnector.set.md +1 -1
- package/site/apidocs/repository.kvconnector.ttl.md +1 -1
- package/site/apidocs/repository.md +13 -4
- package/site/apidocs/repository.model._constructor_.md +1 -1
- package/site/apidocs/repository.model.md +1 -1
- package/site/apidocs/repository.model.toobject.md +1 -1
- package/site/apidocs/repository.modeldefinition.md +1 -0
- package/site/apidocs/repository.modeldefinition.referencesmany.md +35 -0
- package/site/apidocs/repository.modelmetadatahelper.getmodelmetadata.md +1 -1
- package/site/apidocs/repository.modeltype.md +1 -1
- package/site/apidocs/repository.nulltype.md +1 -1
- package/site/apidocs/repository.numbertype.md +1 -1
- package/site/apidocs/repository.objecttype.md +1 -1
- package/site/apidocs/repository.property.array.md +1 -1
- package/site/apidocs/repository.referencesmany.md +5 -3
- package/site/apidocs/repository.referencesmanyaccessor.inclusionresolver.md +23 -0
- package/site/apidocs/repository.referencesmanyaccessor.md +28 -0
- package/site/apidocs/repository.referencesmanydefinition.keyfrom.md +21 -0
- package/site/apidocs/repository.referencesmanydefinition.keyto.md +25 -0
- package/site/apidocs/repository.referencesmanydefinition.md +32 -0
- package/site/apidocs/repository.referencesmanydefinition.targetsmany.md +21 -0
- package/site/apidocs/repository.referencesmanydefinition.type.md +21 -0
- package/site/apidocs/repository.referencesmanyrepository.get.md +36 -0
- package/site/apidocs/repository.referencesmanyrepository.md +30 -0
- package/site/apidocs/repository.referencesone.md +1 -1
- package/site/apidocs/repository.relation.md +1 -1
- package/site/apidocs/repository.relationmetadata.md +2 -2
- package/site/apidocs/repository.repositorymetadata._constructor_.md +1 -1
- package/site/apidocs/repository.repositorymixindoc.datasource.md +1 -1
- package/site/apidocs/repository.repositorymixindoc.migrateschema.md +1 -1
- package/site/apidocs/repository.stringtype.md +1 -1
- package/site/apidocs/repository.transactionalrepository.begintransaction.md +1 -1
- package/site/apidocs/repository.transactionalrepository.md +1 -1
- package/site/apidocs/repository.type.coerce.md +1 -1
- package/site/apidocs/repository.type.iscoercible.md +1 -1
- package/site/apidocs/repository.type.serialize.md +1 -1
- package/site/apidocs/repository.uniontype.md +1 -1
- package/site/apidocs/rest-explorer.restexplorercomponent._constructor_.md +1 -1
- package/site/apidocs/rest-msgpack.msgpackbodyparser._constructor_.md +1 -1
- package/site/apidocs/rest-msgpack.msgpackbodyparsercomponent._constructor_.md +1 -1
- package/site/apidocs/rest.controllerroute._constructor_.md +2 -2
- package/site/apidocs/rest.createbodyparserbinding.md +1 -1
- package/site/apidocs/rest.createroutesforcontroller.md +1 -1
- package/site/apidocs/rest.findroutemiddlewareprovider.md +1 -1
- package/site/apidocs/rest.httphandler._constructor_.md +1 -1
- package/site/apidocs/rest.httphandler.registercontroller.md +1 -1
- package/site/apidocs/rest.infospecenhancer._constructor_.md +1 -1
- package/site/apidocs/rest.invokemethodmiddlewareprovider.md +1 -1
- package/site/apidocs/rest.jsonbodyparser._constructor_.md +1 -1
- package/site/apidocs/rest.middlewaresequence._constructor_.md +1 -1
- package/site/apidocs/rest.parsejson.md +2 -2
- package/site/apidocs/rest.parseoperationargs.md +2 -2
- package/site/apidocs/rest.parseparamsmiddlewareprovider.md +1 -1
- package/site/apidocs/rest.rawbodyparser._constructor_.md +1 -1
- package/site/apidocs/rest.redirectroute._constructor_.md +1 -1
- package/site/apidocs/rest.regexprouter._constructor_.md +1 -1
- package/site/apidocs/rest.rejectprovider.value.md +1 -1
- package/site/apidocs/rest.requestbodyparser._constructor_.md +2 -2
- package/site/apidocs/rest.requestcontext._constructor_.md +1 -1
- package/site/apidocs/rest.restapplication._constructor__1.md +2 -2
- package/site/apidocs/rest.restapplication.basepath.md +1 -1
- package/site/apidocs/rest.restapplication.bodyparser.md +1 -1
- package/site/apidocs/rest.restapplication.exportopenapispec.md +2 -2
- package/site/apidocs/rest.restapplication.expressmiddleware.md +1 -1
- package/site/apidocs/rest.restapplication.expressmiddleware_1.md +2 -2
- package/site/apidocs/rest.restapplication.middleware.md +1 -1
- package/site/apidocs/rest.restapplication.mountexpressrouter.md +1 -1
- package/site/apidocs/rest.restapplication.redirect.md +1 -1
- package/site/apidocs/rest.restapplication.server.md +1 -1
- package/site/apidocs/rest.restapplication.static.md +1 -1
- package/site/apidocs/rest.restcomponent._constructor_.md +1 -1
- package/site/apidocs/rest.resthttperrors.invaliddata.md +1 -1
- package/site/apidocs/rest.resthttperrors.unsupportedmediatype.md +1 -1
- package/site/apidocs/rest.restserver._constructor_.md +1 -1
- package/site/apidocs/rest.restserver.addopenapispecendpoint.md +1 -1
- package/site/apidocs/rest.restserver.basepath.md +1 -1
- package/site/apidocs/rest.restserver.bodyparser.md +1 -1
- package/site/apidocs/rest.restserver.exportopenapispec.md +2 -2
- package/site/apidocs/rest.restserver.getapispec.md +1 -1
- package/site/apidocs/rest.restserver.mountexpressrouter.md +1 -1
- package/site/apidocs/rest.restserver.redirect.md +1 -1
- package/site/apidocs/rest.restserver.static.md +1 -1
- package/site/apidocs/rest.routesource.md +1 -1
- package/site/apidocs/rest.routingtable._constructor_.md +2 -2
- package/site/apidocs/rest.routingtable.registercontroller.md +1 -1
- package/site/apidocs/rest.sanitizejsonparse.md +2 -2
- package/site/apidocs/rest.sendresponsemiddlewareprovider.md +1 -1
- package/site/apidocs/rest.textbodyparser._constructor_.md +1 -1
- package/site/apidocs/rest.trierouter._constructor_.md +1 -1
- package/site/apidocs/rest.urlencodedbodyparser._constructor_.md +1 -1
- package/site/apidocs/rest.validateapipath.md +1 -1
- package/site/apidocs/rest.validaterequestbody.md +3 -3
- package/site/apidocs/rest.validatevalueagainstschema.md +2 -2
- package/site/apidocs/service-proxy.applicationwithservices.component.md +1 -1
- package/site/apidocs/service-proxy.applicationwithservices.serviceprovider.md +1 -1
- package/site/apidocs/socketio.socketioapplication._constructor_.md +1 -1
- package/site/apidocs/socketio.socketioapplication.server.md +1 -1
- package/site/apidocs/socketio.socketioinvokemethodprovider.md +1 -1
- package/site/apidocs/socketio.socketiorejectprovider.md +1 -1
- package/site/apidocs/socketio.socketiosendprovider.md +1 -1
- package/site/apidocs/socketio.socketioserver._constructor_.md +1 -1
- package/site/apidocs/socketio.socketioserver.route.md +1 -1
- package/site/apidocs/testlab.createunexpectedhttperrorlogger.md +1 -1
- package/site/apidocs/testlab.givenhttpserverconfig.md +1 -1
- package/site/apidocs/testlab.httpgetasync.md +1 -1
- package/site/apidocs/testlab.httpsgetasync.md +1 -1
- package/site/apidocs/testlab.stubexpresscontext.md +1 -1
- package/site/apidocs/testlab.stubhandlercontext.md +1 -1
- package/site/apidocs/testlab.testsandbox._constructor_.md +1 -1
- package/site/apidocs/testlab.testsandbox.copyfile.md +2 -2
- package/site/apidocs/tsdocs.getpackages.md +1 -1
- package/site/apidocs/tsdocs.getpackageswithtsdocs.md +1 -1
- package/site/apidocs/tsdocs.runextractorformonorepo.md +1 -1
- package/site/apidocs/tsdocs.runextractorforpackage.md +2 -2
- package/site/apidocs/tsdocs.updateapidocs.md +1 -1
- package/site/apidocs/typeorm.getmodelschema.md +1 -1
- package/site/apidocs/typeorm.typeorm.repository.md +1 -1
- package/site/apidocs/typeorm.typeormcomponent._constructor_.md +1 -1
- package/site/apidocs/typeorm.typeormconnectionbooter._constructor_.md +1 -1
- package/site/changelogs/bodyparsers/rest-msgpack/CHANGELOG.md +8 -0
- package/site/changelogs/examples/access-control-migration/CHANGELOG.md +8 -0
- package/site/changelogs/examples/binding-resolution/CHANGELOG.md +8 -0
- package/site/changelogs/examples/context/CHANGELOG.md +8 -0
- package/site/changelogs/examples/express-composition/CHANGELOG.md +8 -0
- package/site/changelogs/examples/file-transfer/CHANGELOG.md +8 -0
- package/site/changelogs/examples/graphql/CHANGELOG.md +8 -0
- package/site/changelogs/examples/greeter-extension/CHANGELOG.md +8 -0
- package/site/changelogs/examples/greeting-app/CHANGELOG.md +8 -0
- package/site/changelogs/examples/hello-world/CHANGELOG.md +8 -0
- package/site/changelogs/examples/lb3-application/CHANGELOG.md +8 -0
- package/site/changelogs/examples/log-extension/CHANGELOG.md +8 -0
- package/site/changelogs/examples/metrics-prometheus/CHANGELOG.md +8 -0
- package/site/changelogs/examples/multi-tenancy/CHANGELOG.md +8 -0
- package/site/changelogs/examples/passport-login/CHANGELOG.md +8 -0
- package/site/changelogs/examples/references-many/CHANGELOG.md +15 -0
- package/site/changelogs/examples/rest-crud/CHANGELOG.md +8 -0
- package/site/changelogs/examples/rpc-server/CHANGELOG.md +8 -0
- package/site/changelogs/examples/soap-calculator/CHANGELOG.md +8 -0
- package/site/changelogs/examples/socketio/CHANGELOG.md +8 -0
- package/site/changelogs/examples/todo/CHANGELOG.md +8 -0
- package/site/changelogs/examples/todo-jwt/CHANGELOG.md +8 -0
- package/site/changelogs/examples/todo-list/CHANGELOG.md +8 -0
- package/site/changelogs/examples/validation-app/CHANGELOG.md +8 -0
- package/site/changelogs/examples/webpack/CHANGELOG.md +8 -0
- package/site/changelogs/extensions/apiconnect/CHANGELOG.md +8 -0
- package/site/changelogs/extensions/authentication-jwt/CHANGELOG.md +8 -0
- package/site/changelogs/extensions/authentication-passport/CHANGELOG.md +8 -0
- package/site/changelogs/extensions/context-explorer/CHANGELOG.md +8 -0
- package/site/changelogs/extensions/cron/CHANGELOG.md +8 -0
- package/site/changelogs/extensions/graphql/CHANGELOG.md +8 -0
- package/site/changelogs/extensions/health/CHANGELOG.md +8 -0
- package/site/changelogs/extensions/logging/CHANGELOG.md +8 -0
- package/site/changelogs/extensions/metrics/CHANGELOG.md +8 -0
- package/site/changelogs/extensions/pooling/CHANGELOG.md +8 -0
- package/site/changelogs/extensions/socketio/CHANGELOG.md +8 -0
- package/site/changelogs/extensions/typeorm/CHANGELOG.md +8 -0
- package/site/changelogs/fixtures/mock-oauth2-provider/CHANGELOG.md +0 -271
- package/site/changelogs/packages/authentication/CHANGELOG.md +8 -0
- package/site/changelogs/packages/authorization/CHANGELOG.md +8 -0
- package/site/changelogs/packages/boot/CHANGELOG.md +8 -0
- package/site/changelogs/packages/booter-lb3app/CHANGELOG.md +8 -0
- package/site/changelogs/packages/build/CHANGELOG.md +14 -0
- package/site/changelogs/packages/cli/CHANGELOG.md +11 -0
- package/site/changelogs/packages/context/CHANGELOG.md +8 -0
- package/site/changelogs/packages/core/CHANGELOG.md +8 -0
- package/site/changelogs/packages/eslint-config/CHANGELOG.md +19 -0
- package/site/changelogs/packages/express/CHANGELOG.md +8 -0
- package/site/changelogs/packages/http-caching-proxy/CHANGELOG.md +8 -0
- package/site/changelogs/packages/http-server/CHANGELOG.md +8 -0
- package/site/changelogs/packages/metadata/CHANGELOG.md +8 -0
- package/site/changelogs/packages/model-api-builder/CHANGELOG.md +8 -0
- package/site/changelogs/packages/monorepo/CHANGELOG.md +14 -0
- package/site/changelogs/packages/openapi-spec-builder/CHANGELOG.md +8 -0
- package/site/changelogs/packages/openapi-v3/CHANGELOG.md +8 -0
- package/site/changelogs/packages/repository/CHANGELOG.md +8 -0
- package/site/changelogs/packages/repository-json-schema/CHANGELOG.md +8 -0
- package/site/changelogs/packages/repository-tests/CHANGELOG.md +8 -0
- package/site/changelogs/packages/rest/CHANGELOG.md +8 -0
- package/site/changelogs/packages/rest-crud/CHANGELOG.md +8 -0
- package/site/changelogs/packages/rest-explorer/CHANGELOG.md +8 -0
- package/site/changelogs/packages/security/CHANGELOG.md +8 -0
- package/site/changelogs/packages/service-proxy/CHANGELOG.md +8 -0
- package/site/changelogs/packages/testlab/CHANGELOG.md +14 -0
- package/site/changelogs/packages/tsdocs/CHANGELOG.md +8 -0
- package/site/decorators/Decorators_repository.md +25 -0
- package/site/migration/models/relations.md +1 -2
- package/site/readmes/loopback-next/examples/references-many/README.md +49 -0
- package/site/sidebars/lb4_sidebar.yml +4 -0
package/CHANGELOG.md
CHANGED
|
@@ -3,6 +3,22 @@
|
|
|
3
3
|
All notable changes to this project will be documented in this file.
|
|
4
4
|
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
|
5
5
|
|
|
6
|
+
## [5.0.0](https://github.com/loopbackio/loopback-next/compare/@loopback/docs@4.0.4...@loopback/docs@5.0.0) (2022-05-05)
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
### ⚠ BREAKING CHANGES
|
|
10
|
+
|
|
11
|
+
* remove node v12 support
|
|
12
|
+
|
|
13
|
+
### Features
|
|
14
|
+
|
|
15
|
+
* add polymorphic relations ([f4b8158](https://github.com/loopbackio/loopback-next/commit/f4b8158387222ec64fe7ef6971da8151f2016dda)), closes [#2487](https://github.com/loopbackio/loopback-next/issues/2487)
|
|
16
|
+
* add support for node v18 ([ccb4c61](https://github.com/loopbackio/loopback-next/commit/ccb4c61307d94ab7bb07a19c547dfc4fa7d388a8))
|
|
17
|
+
* remove node v12 support ([5f66e5b](https://github.com/loopbackio/loopback-next/commit/5f66e5bd288ba806b3aa6550fc29c5009de8b60d))
|
|
18
|
+
* **repository:** support `ReferencesMany` relation ([371a6dc](https://github.com/loopbackio/loopback-next/commit/371a6dcdf32d1a9a674f22528160b775f6639364))
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
|
|
6
22
|
## [4.0.4](https://github.com/loopbackio/loopback-next/compare/@loopback/docs@4.0.3...@loopback/docs@4.0.4) (2022-03-29)
|
|
7
23
|
|
|
8
24
|
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@loopback/docs",
|
|
3
3
|
"description": "Documentation files rendered at [https://loopback.io](https://loopback.io)",
|
|
4
|
-
"version": "
|
|
4
|
+
"version": "5.0.0",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"LoopBack",
|
|
7
7
|
"docs"
|
|
@@ -16,7 +16,7 @@
|
|
|
16
16
|
"directory": "docs"
|
|
17
17
|
},
|
|
18
18
|
"engines": {
|
|
19
|
-
"node": "
|
|
19
|
+
"node": "14 || 16 || 17 || 18"
|
|
20
20
|
},
|
|
21
21
|
"scripts": {
|
|
22
22
|
"version": "node ./bin/copy-readmes.js && node ./bin/copy-changelogs.js && cd .. && npm run tsdocs",
|
|
@@ -32,11 +32,11 @@
|
|
|
32
32
|
"site/"
|
|
33
33
|
],
|
|
34
34
|
"dependencies": {
|
|
35
|
-
"fs-extra": "^10.0
|
|
36
|
-
"tslib": "^2.
|
|
35
|
+
"fs-extra": "^10.1.0",
|
|
36
|
+
"tslib": "^2.4.0"
|
|
37
37
|
},
|
|
38
38
|
"devDependencies": {
|
|
39
|
-
"@loopback/build": "^
|
|
39
|
+
"@loopback/build": "^9.0.0"
|
|
40
40
|
},
|
|
41
|
-
"gitHead": "
|
|
41
|
+
"gitHead": "61453a3d7a16f9f37875a3f2c2a071568eb3e3af"
|
|
42
42
|
}
|
package/site/CHANGELOG.md
CHANGED
|
@@ -74,6 +74,7 @@ permalink: /doc/en/lb4/changelog.index.html
|
|
|
74
74
|
- [@loopback/example-metrics-prometheus](changelogs/examples/metrics-prometheus/CHANGELOG.md)
|
|
75
75
|
- [@loopback/example-multi-tenancy](changelogs/examples/multi-tenancy/CHANGELOG.md)
|
|
76
76
|
- [@loopback/example-passport-login](changelogs/examples/passport-login/CHANGELOG.md)
|
|
77
|
+
- [@loopback/example-references-many](changelogs/examples/references-many/CHANGELOG.md)
|
|
77
78
|
- [@loopback/example-rest-crud](changelogs/examples/rest-crud/CHANGELOG.md)
|
|
78
79
|
- [@loopback/example-rpc-server](changelogs/examples/rpc-server/CHANGELOG.md)
|
|
79
80
|
- [@loopback/example-soap-calculator](changelogs/examples/soap-calculator/CHANGELOG.md)
|
package/site/MONOREPO.md
CHANGED
|
@@ -40,6 +40,7 @@ one in the monorepo: `npm run update-monorepo-file`
|
|
|
40
40
|
| [examples/todo-jwt](https://github.com/loopbackio/loopback-next/tree/master/examples/todo-jwt) | @loopback/example-todo-jwt | A modified Todo tutorial how to build an application with JWT authentication and LoopBack 4 |
|
|
41
41
|
| [examples/todo-list](https://github.com/loopbackio/loopback-next/tree/master/examples/todo-list) | @loopback/example-todo-list | Continuation of the todo example using relations in LoopBack 4. |
|
|
42
42
|
| [examples/validation-app](https://github.com/loopbackio/loopback-next/tree/master/examples/validation-app) | @loopback/example-validation-app | An example demonstrating how to add validation in a LoopBack 4 application |
|
|
43
|
+
| [examples/references-many](https://github.com/loopbackio/loopback-next/tree/master/examples/references-many) | @loopback/example-references-many | An example of references many relation in a LoopBack 4 |
|
|
43
44
|
| [examples/webpack](https://github.com/loopbackio/loopback-next/tree/master/examples/webpack) | @loopback/example-webpack | An example to bundle @loopback/core using webpack |
|
|
44
45
|
| [extensions/apiconnect](https://github.com/loopbackio/loopback-next/tree/master/extensions/apiconnect) | @loopback/apiconnect | An extension for IBM API Connect |
|
|
45
46
|
| [extensions/authentication-jwt](https://github.com/loopbackio/loopback-next/tree/master/extensions/authentication-jwt) | @loopback/authentication-jwt | Extension for the prototype of JWT authentication |
|
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
---
|
|
2
|
+
lang: en
|
|
3
|
+
title: 'Polymorphic Relations'
|
|
4
|
+
keywords: LoopBack 4.0, LoopBack 4, Node.js, TypeScript, OpenAPI, Model Relation
|
|
5
|
+
sidebar: lb4_sidebar
|
|
6
|
+
permalink: /doc/en/lb4/Polymorphic-relation.html
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## Overview
|
|
10
|
+
|
|
11
|
+
LoopBack supports _polymorphic relations_ in which a model can belong to more
|
|
12
|
+
than one other model, on a single association.
|
|
13
|
+
|
|
14
|
+
The examples below use the following example models: `Delivery`, `Letter`,
|
|
15
|
+
`Parcel`, where a `Delivery` may contain a `Deliverable` - either a `Letter` or
|
|
16
|
+
a `Parcel`.
|
|
17
|
+
|
|
18
|
+
## Model definition
|
|
19
|
+
|
|
20
|
+
We first define `Deliverable`s:
|
|
21
|
+
|
|
22
|
+
```javascript
|
|
23
|
+
class Deliverable extends Entity {
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
class Letter extends Deliverable {
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
class Parcel extends Deliverable {
|
|
30
|
+
}
|
|
31
|
+
...
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
The relation between the `Delivery` and `Deliverable`s is: `Delivery` `hasOne`
|
|
35
|
+
`Deliverable`; the relation is polymorphic.
|
|
36
|
+
|
|
37
|
+
```javascript
|
|
38
|
+
class Delivery extends Entity {
|
|
39
|
+
@hasOne(() => Deliverable, {polymorphic: true})
|
|
40
|
+
deliverable: Deliverable;
|
|
41
|
+
|
|
42
|
+
deliverableType: string;
|
|
43
|
+
}
|
|
44
|
+
...
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
A customized discriminator can be specified. The discriminator parameter
|
|
48
|
+
specifies the name of a field in the model indicating the actual type of the
|
|
49
|
+
`Deliverable`.
|
|
50
|
+
|
|
51
|
+
```javascript
|
|
52
|
+
class Delivery extends Entity {
|
|
53
|
+
@hasOne(() => Deliverable, {polymorphic: {discriminator: "deliverable_type"}})
|
|
54
|
+
deliverable: Deliverable;
|
|
55
|
+
|
|
56
|
+
deliverable_type: string;
|
|
57
|
+
}
|
|
58
|
+
...
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
## Setting up repository
|
|
62
|
+
|
|
63
|
+
The only difference on the repository class is that instead of having a single
|
|
64
|
+
repository getter, a dictionary of subclass repository getters is passed into
|
|
65
|
+
the repository factory creater.
|
|
66
|
+
|
|
67
|
+
```javascript
|
|
68
|
+
export class DeliveryRepository extends DefaultCrudRepository {
|
|
69
|
+
public readonly deliverable: HasOneRepositoryFactory<Deliverable, typeof Delivery.prototype.id>;
|
|
70
|
+
|
|
71
|
+
constructor(
|
|
72
|
+
dataSource: juggler.DataSource,
|
|
73
|
+
@repository.getter('LetterRepository')
|
|
74
|
+
protected letterRepositoryGetter: Getter<EntityCrudRepository<Deliverable, typeof Deliverable.prototype.id, DeliverableRelations>>,
|
|
75
|
+
@repository.getter('ParcelRepository')
|
|
76
|
+
protected parcelRepositoryGetter: Getter<EntityCrudRepository<Deliverable, typeof Deliverable.prototype.id, DeliverableRelations>>,
|
|
77
|
+
) {
|
|
78
|
+
super(Delivery, dataSource);
|
|
79
|
+
this.deliverable = this.createHasOneRepositoryFactoryFor(
|
|
80
|
+
'deliverable',
|
|
81
|
+
// use a dictionary of repoGetters instead of a single repoGetter instance
|
|
82
|
+
{Letter: letterRepositoryGetter, Parcel: parcelRepositoryGetter},
|
|
83
|
+
);
|
|
84
|
+
this.registerInclusionResolver('deliverable', this.deliverable.inclusionResolver);
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
...
|
|
88
|
+
```
|
|
89
|
+
|
|
90
|
+
## Operations
|
|
91
|
+
|
|
92
|
+
The polymorphic relation supports queries with inclusions
|
|
93
|
+
|
|
94
|
+
```javascript
|
|
95
|
+
const result = await deliveryRepo.findById(delivery1.id, {
|
|
96
|
+
include: ['deliverable'],
|
|
97
|
+
});
|
|
98
|
+
...
|
|
99
|
+
```
|
|
100
|
+
|
|
101
|
+
The instances of polymorphic relations can be created through repository
|
|
102
|
+
operations
|
|
103
|
+
|
|
104
|
+
```javascript
|
|
105
|
+
deliveryRepo
|
|
106
|
+
.deliverable(deliveryId)
|
|
107
|
+
.create(letter1Data, {polymorphicType: "Letter"});
|
|
108
|
+
...
|
|
109
|
+
```
|
|
110
|
+
|
|
111
|
+
## belongsTo, hasMany, hasManyThrough relations
|
|
112
|
+
|
|
113
|
+
Polymorphic relation on `belongsTo` is similar to `hasOne`.
|
|
114
|
+
|
|
115
|
+
Polymorphic relation is not supported on `hasMany` relations. However, there is
|
|
116
|
+
an easy workaround: having a `hasMany` relation on a non-polymorphic concrete
|
|
117
|
+
type which `hasOne` polymorphic relation with an abstract polymorphic type. For
|
|
118
|
+
example, `Delivery` `hasMany` `DeliveryDeliverablePair` and
|
|
119
|
+
`DeliveryDeliverablePair` `hasOne` `Deliverable`.
|
|
120
|
+
|
|
121
|
+
The polymorphic relation on `hasManyThrough` relation is on the target model,
|
|
122
|
+
not the through model. The discriminator is defined on the through model, and
|
|
123
|
+
the target model is polymorphic.
|
|
@@ -0,0 +1,379 @@
|
|
|
1
|
+
---
|
|
2
|
+
lang: en
|
|
3
|
+
title: 'referencesMany Relation'
|
|
4
|
+
keywords: LoopBack 4.0, LoopBack 4, Node.js, TypeScript, OpenAPI, Model Relation
|
|
5
|
+
sidebar: lb4_sidebar
|
|
6
|
+
permalink: /doc/en/lb4/ReferencesMany-relation.html
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## Overview
|
|
10
|
+
|
|
11
|
+
{% include important.html content="Please read [Relations](Relations.md) first." %}
|
|
12
|
+
|
|
13
|
+
LoopBack relations enable you to create connections between models and provide
|
|
14
|
+
navigation APIs to deal with a graph of model instances. In addition to the
|
|
15
|
+
traditional ones, LoopBack supports `referencesMany` relation that embeds an
|
|
16
|
+
array of foreign keys to reference other objects. For example:
|
|
17
|
+
|
|
18
|
+
```json
|
|
19
|
+
{
|
|
20
|
+
"id": 1,
|
|
21
|
+
"name": "John Smith",
|
|
22
|
+
"accountIds": ["saving-01", "checking-01"]
|
|
23
|
+
}
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
To add a `referencesMany` relation to your LoopBack application, you need to
|
|
27
|
+
perform the following steps:
|
|
28
|
+
|
|
29
|
+
1. Add a property to your source model to define the array of foreign keys.
|
|
30
|
+
2. Modify the source model repository class to provide an accessor function for
|
|
31
|
+
obtaining the target model instances.
|
|
32
|
+
3. Call the accessor function in your controller methods.
|
|
33
|
+
|
|
34
|
+
## Defining a referencesMany relation
|
|
35
|
+
|
|
36
|
+
This section describes how to define a `referencesMany` relation at the model
|
|
37
|
+
level using the `@referencesMany` decorator to define the array of foreign keys.
|
|
38
|
+
|
|
39
|
+
LB4 also provides an CLI tool `lb4 relation` to generate `referencesMany`
|
|
40
|
+
relation for you. Before you check out the
|
|
41
|
+
[`Relation Generator`](https://loopback.io/doc/en/lb4/Relation-generator.html)
|
|
42
|
+
page, read on to learn how you can define relations to meet your requirements.
|
|
43
|
+
|
|
44
|
+
### Relation Metadata
|
|
45
|
+
|
|
46
|
+
LB4 uses three `keyFrom`, `keyTo` and `name` fields in the `referencesMany`
|
|
47
|
+
relation metadata to configure relations. The relation metadata has its own
|
|
48
|
+
default values for these three fields:
|
|
49
|
+
|
|
50
|
+
<table>
|
|
51
|
+
<thead>
|
|
52
|
+
<tr>
|
|
53
|
+
<th width="95">Field Name</th>
|
|
54
|
+
<th width="260">Description</th>
|
|
55
|
+
<th width="260">Default Value</th>
|
|
56
|
+
<th>Example</th>
|
|
57
|
+
</tr>
|
|
58
|
+
</thead>
|
|
59
|
+
<tbody>
|
|
60
|
+
<tr>
|
|
61
|
+
<td><code>keyFrom</code></td>
|
|
62
|
+
<td>the array property of foreign keys</td>
|
|
63
|
+
<td>the target model name appended with `Ids` in camel case</td>
|
|
64
|
+
<td><code>Customer.accountIds</code></td>
|
|
65
|
+
</tr>
|
|
66
|
+
<tr>
|
|
67
|
+
<td><code>keyTo</code></td>
|
|
68
|
+
<td>the source key of the target model</td>
|
|
69
|
+
<td>the primary key in the target model</td>
|
|
70
|
+
<td><code>Account.id</code></td>
|
|
71
|
+
</tr>
|
|
72
|
+
<tr>
|
|
73
|
+
<td><code>name</code></td>
|
|
74
|
+
<td>the name of the relation</td>
|
|
75
|
+
<td>the plural name of target model</td>
|
|
76
|
+
<td><code>accounts</code></td>
|
|
77
|
+
</tr>
|
|
78
|
+
|
|
79
|
+
</tbody>
|
|
80
|
+
</table>
|
|
81
|
+
|
|
82
|
+
We recommend to use default values. If you'd like to customize the name of
|
|
83
|
+
foreign keys or the relation name, you'll need to specify some fields through
|
|
84
|
+
the relation decorator.
|
|
85
|
+
|
|
86
|
+
The standard naming convention for the property of foreign keys in the source
|
|
87
|
+
model is `target name` + `Ids` (for example, Customer.accountIds).
|
|
88
|
+
|
|
89
|
+
{% include code-caption.html content="/src/models/customer.model.ts" %}
|
|
90
|
+
|
|
91
|
+
```ts
|
|
92
|
+
import {referencesMany, Entity, model, property} from '@loopback/repository';
|
|
93
|
+
import {Account} from './account.model';
|
|
94
|
+
|
|
95
|
+
@model()
|
|
96
|
+
export class Customer extends Entity {
|
|
97
|
+
@property({
|
|
98
|
+
type: 'number',
|
|
99
|
+
id: true,
|
|
100
|
+
})
|
|
101
|
+
id: number;
|
|
102
|
+
|
|
103
|
+
@property({
|
|
104
|
+
type: 'string',
|
|
105
|
+
})
|
|
106
|
+
name: string;
|
|
107
|
+
|
|
108
|
+
@referencesMany(() => Account)
|
|
109
|
+
accountIds: number[]; // relation name will default to `accounts`
|
|
110
|
+
|
|
111
|
+
constructor(data: Partial<Customer>) {
|
|
112
|
+
super(data);
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
export interface CustomerRelations {
|
|
117
|
+
// describe navigational properties here
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
export type CustomerWithRelations = Customer & CustomerRelations;
|
|
121
|
+
```
|
|
122
|
+
|
|
123
|
+
If the property name of foreign keys in the source model has to be customized
|
|
124
|
+
(`account_ids` instead of `accountIds` for example), the relation name has to be
|
|
125
|
+
explicitly specified in the `name` attribute of the relation definition.
|
|
126
|
+
Otherwise the _default relation name_ generates by LB4 (`account_ids` in this
|
|
127
|
+
case) will be the same as the customized name of foreign keys, which is invalid.
|
|
128
|
+
|
|
129
|
+
{% include warning.html content="Make sure that you have different names for the property name of foreign keys and the relation name in ReferencesMany relations."%}
|
|
130
|
+
|
|
131
|
+
```ts
|
|
132
|
+
// import statements
|
|
133
|
+
@model()
|
|
134
|
+
export class Customer extends Entity {
|
|
135
|
+
@property({
|
|
136
|
+
type: 'number',
|
|
137
|
+
id: true,
|
|
138
|
+
})
|
|
139
|
+
id: number;
|
|
140
|
+
|
|
141
|
+
@property({
|
|
142
|
+
type: 'string',
|
|
143
|
+
})
|
|
144
|
+
name: string;
|
|
145
|
+
|
|
146
|
+
@referencesMany(
|
|
147
|
+
() => Account,
|
|
148
|
+
{name: 'accounts'}, // specify the relation name if fk is customized
|
|
149
|
+
)
|
|
150
|
+
account_ids: number[]; // customized foreign keys
|
|
151
|
+
|
|
152
|
+
// other properties, constructor, etc.
|
|
153
|
+
}
|
|
154
|
+
```
|
|
155
|
+
|
|
156
|
+
If you need to use _different names for models and database columns_, to use
|
|
157
|
+
`account_ids` as db column name other than `accountIds` for example, passing the
|
|
158
|
+
column name in the third argument to the `referencesMany` decorator would allow
|
|
159
|
+
you to do so:
|
|
160
|
+
|
|
161
|
+
```ts
|
|
162
|
+
class Customer extends Entity {
|
|
163
|
+
// constructor, properties, etc.
|
|
164
|
+
@referencesMany(() => Account, {keyFrom: 'accountIds'}, {name: 'account_ids'})
|
|
165
|
+
accountIds: number[];
|
|
166
|
+
}
|
|
167
|
+
```
|
|
168
|
+
|
|
169
|
+
If you need to use another attribute other than the id property to be the source
|
|
170
|
+
key of the target model (joining two tables on non-primary attribute), the
|
|
171
|
+
`keyTo` attribute in the relation definition has to be stated explicitly.
|
|
172
|
+
|
|
173
|
+
```ts
|
|
174
|
+
class Customer extends Entity {
|
|
175
|
+
// constructor, properties, etc.
|
|
176
|
+
@referencesMany(() => Account, {keyTo: 'customized_target_property'})
|
|
177
|
+
accountIds: number[];
|
|
178
|
+
}
|
|
179
|
+
|
|
180
|
+
export interface CustomerRelations {
|
|
181
|
+
accounts?: AccountWithRelations[];
|
|
182
|
+
}
|
|
183
|
+
```
|
|
184
|
+
|
|
185
|
+
{% include important.html content="LB4 doesn't support composite keys for now. e.g joining two tables with more than one source key. Related GitHub issue: [Composite primary/foreign keys](https://github.com/loopbackio/loopback-next/issues/1830)" %}
|
|
186
|
+
|
|
187
|
+
## Configuring a referencesMany relation
|
|
188
|
+
|
|
189
|
+
The configuration and resolution of a `referencesMany` relation takes place at
|
|
190
|
+
the repository level. Once `referencesMany` relation is defined on the source
|
|
191
|
+
model, then there are a couple of steps involved to configure it and use it. On
|
|
192
|
+
the source repository, the following are required:
|
|
193
|
+
|
|
194
|
+
- In the constructor of your source repository class, use
|
|
195
|
+
[Dependency Injection](Dependency-injection.md) to receive a getter function
|
|
196
|
+
for obtaining an instance of the target repository.
|
|
197
|
+
- Declare a property with the factory function type
|
|
198
|
+
`ReferencesManyAccessor<targetModel, typeof sourceModel.prototype.id>` on the
|
|
199
|
+
source repository class.
|
|
200
|
+
- call the `createReferencesManyAccessorFor` function in the constructor of the
|
|
201
|
+
source repository class with the relation name (decorated relation property on
|
|
202
|
+
the source model) and target repository instance and assign it the property
|
|
203
|
+
mentioned above.
|
|
204
|
+
|
|
205
|
+
The following code snippet shows how it would look like:
|
|
206
|
+
|
|
207
|
+
{% include code-caption.html
|
|
208
|
+
content="/src/repositories/customer.repository.ts" %}
|
|
209
|
+
|
|
210
|
+
```ts
|
|
211
|
+
import {Getter, inject} from '@loopback/core';
|
|
212
|
+
import {
|
|
213
|
+
ReferencesManyAccessor,
|
|
214
|
+
DefaultCrudRepository,
|
|
215
|
+
juggler,
|
|
216
|
+
repository,
|
|
217
|
+
} from '@loopback/repository';
|
|
218
|
+
import {Account, Customer, CustomerRelations} from '../models';
|
|
219
|
+
import {AccountRepository} from '../repositories';
|
|
220
|
+
|
|
221
|
+
export class CustomerRepository extends DefaultCrudRepository<
|
|
222
|
+
Customer,
|
|
223
|
+
typeof Customer.prototype.id,
|
|
224
|
+
CustomerRelations
|
|
225
|
+
> {
|
|
226
|
+
public readonly accounts: ReferencesManyAccessor<
|
|
227
|
+
Account,
|
|
228
|
+
typeof Customer.prototype.id
|
|
229
|
+
>;
|
|
230
|
+
|
|
231
|
+
constructor(
|
|
232
|
+
@inject('datasources.db') protected db: juggler.DataSource,
|
|
233
|
+
@repository.getter('AccountRepository')
|
|
234
|
+
accountRepositoryGetter: Getter<AccountRepository>,
|
|
235
|
+
) {
|
|
236
|
+
super(Customer, db);
|
|
237
|
+
this.accounts = this.createReferencesManyAccessorFor(
|
|
238
|
+
'accounts',
|
|
239
|
+
accountRepositoryGetter,
|
|
240
|
+
);
|
|
241
|
+
}
|
|
242
|
+
}
|
|
243
|
+
```
|
|
244
|
+
|
|
245
|
+
`ReferencesManyAccessor` is a function accepting the primary key (id) of a
|
|
246
|
+
source model instance (e.g. `customer.id`) and returning back the related target
|
|
247
|
+
model instances (e.g. a `Account[]`). See also
|
|
248
|
+
[API Docs](https://loopback.io/doc/en/lb4/apidocs.repository.belongstoaccessor.html)
|
|
249
|
+
|
|
250
|
+
{% include note.html content="Notice that `CustomerRepository.create()` expects an `Customer` model only, navigational properties are not expected to be included in the target data. For instance, the following request will be rejected:
|
|
251
|
+
`customerRepository.create({`
|
|
252
|
+
` id: 1,`
|
|
253
|
+
` name: 'John'`
|
|
254
|
+
` accountIds: [1]`
|
|
255
|
+
` accounts:[{id: 1, balance: 0}] // rejected`
|
|
256
|
+
`})`" %}
|
|
257
|
+
|
|
258
|
+
## Querying related models
|
|
259
|
+
|
|
260
|
+
Different from LB3, LB4 creates a different inclusion resolver for each relation
|
|
261
|
+
type to query related models. Each **relation** has its own inclusion resolver
|
|
262
|
+
`inclusionResolver`. And each **repository** has a built-in property
|
|
263
|
+
`inclusionResolvers` as a registry for its inclusionResolvers.
|
|
264
|
+
|
|
265
|
+
A `referencesMany` relation has an `inclusionResolver` function as a property.
|
|
266
|
+
It fetches target models for the given list of source model instances.
|
|
267
|
+
|
|
268
|
+
### Use the relation between `Customer` and `Account` we show above.
|
|
269
|
+
|
|
270
|
+
After setting up the relation in the repository class, the inclusion resolver
|
|
271
|
+
allows users to retrieve all customers along with their related accounts through
|
|
272
|
+
the following code at the repository level:
|
|
273
|
+
|
|
274
|
+
```ts
|
|
275
|
+
customerRepo.find({include: ['accounts']});
|
|
276
|
+
```
|
|
277
|
+
|
|
278
|
+
or use APIs with controllers:
|
|
279
|
+
|
|
280
|
+
```
|
|
281
|
+
GET http://localhost:3000/customers?filter[include][]=accounts
|
|
282
|
+
```
|
|
283
|
+
|
|
284
|
+
### Enable/disable the inclusion resolvers
|
|
285
|
+
|
|
286
|
+
- Base repository classes have a public property `inclusionResolvers`, which
|
|
287
|
+
maintains a map containing inclusion resolvers for each relation.
|
|
288
|
+
- The `inclusionResolver` of a certain relation is built when the source
|
|
289
|
+
repository class calls the `createReferencesManyAccessorFor` function in the
|
|
290
|
+
constructor with the relation name.
|
|
291
|
+
- Call `registerInclusionResolver` to add the resolver of that relation to the
|
|
292
|
+
`inclusionResolvers` map. (As we realized in LB3, not all relations are
|
|
293
|
+
allowed to be traversed. Users can decide to which resolvers can be added.)
|
|
294
|
+
The first parameter is the name of the relation.
|
|
295
|
+
|
|
296
|
+
The following code snippet shows how to register the inclusion resolver for the
|
|
297
|
+
referencesMany relation 'accounts':
|
|
298
|
+
|
|
299
|
+
```ts
|
|
300
|
+
export class CustomerRepository extends DefaultCrudRepository {
|
|
301
|
+
accounts: ReferencesManyAccessor<Account, typeof Customer.prototype.id>;
|
|
302
|
+
|
|
303
|
+
constructor(
|
|
304
|
+
dataSource: juggler.DataSource,
|
|
305
|
+
accountRepositoryGetter: Getter<AccountRepository>,
|
|
306
|
+
) {
|
|
307
|
+
super(Customer, dataSource);
|
|
308
|
+
|
|
309
|
+
// we already have this line to create a ReferencesManyRepository factory
|
|
310
|
+
this.accounts = this.createReferencesManyAccessorFor(
|
|
311
|
+
'accounts',
|
|
312
|
+
accountRepositoryGetter,
|
|
313
|
+
);
|
|
314
|
+
|
|
315
|
+
// add this line to register inclusion resolver.
|
|
316
|
+
this.registerInclusionResolver('accounts', this.accounts.inclusionResolver);
|
|
317
|
+
}
|
|
318
|
+
}
|
|
319
|
+
```
|
|
320
|
+
|
|
321
|
+
- We can simply include the relation in queries via `find()`, `findOne()`, and
|
|
322
|
+
`findById()` methods. For example, these queries return all customers with
|
|
323
|
+
their accounts:
|
|
324
|
+
|
|
325
|
+
if you process data at the repository level:
|
|
326
|
+
|
|
327
|
+
```ts
|
|
328
|
+
customerRepository.find({include: ['accounts']});
|
|
329
|
+
```
|
|
330
|
+
|
|
331
|
+
this is the same as the url:
|
|
332
|
+
|
|
333
|
+
```
|
|
334
|
+
GET http://localhost:3000/customers?filter[include][]=accounts
|
|
335
|
+
```
|
|
336
|
+
|
|
337
|
+
which returns:
|
|
338
|
+
|
|
339
|
+
```ts
|
|
340
|
+
[
|
|
341
|
+
{
|
|
342
|
+
id: 1,
|
|
343
|
+
name: 'John',
|
|
344
|
+
accountIds: [12, 16],
|
|
345
|
+
accounts: [
|
|
346
|
+
{
|
|
347
|
+
id: 12,
|
|
348
|
+
balance: 99,
|
|
349
|
+
},
|
|
350
|
+
{
|
|
351
|
+
id: 16,
|
|
352
|
+
balance: 0,
|
|
353
|
+
},
|
|
354
|
+
],
|
|
355
|
+
},
|
|
356
|
+
{
|
|
357
|
+
id: 2,
|
|
358
|
+
name: 'Dave',
|
|
359
|
+
accountIds: [4],
|
|
360
|
+
accounts: [
|
|
361
|
+
{
|
|
362
|
+
id: 4,
|
|
363
|
+
balance: 10,
|
|
364
|
+
},
|
|
365
|
+
],
|
|
366
|
+
},
|
|
367
|
+
];
|
|
368
|
+
```
|
|
369
|
+
|
|
370
|
+
- You can delete a relation from `inclusionResolvers` to disable the inclusion
|
|
371
|
+
for a certain relation. e.g
|
|
372
|
+
`customerRepository.inclusionResolvers.delete('accounts')`
|
|
373
|
+
|
|
374
|
+
### Query multiple relations
|
|
375
|
+
|
|
376
|
+
It is possible to query several relations or nested include relations with
|
|
377
|
+
custom scope once you have the inclusion resolver of each relation set up. Check
|
|
378
|
+
[HasMany - Query multiple relations](HasMany-relation.md#query-multiple-relations)
|
|
379
|
+
for the usage and examples.
|
|
@@ -138,6 +138,7 @@ The tool will prompt you for:
|
|
|
138
138
|
- [HasManyThrough](HasManyThrough-relation.md)
|
|
139
139
|
- [HasOne](HasOne-relation.md)
|
|
140
140
|
- [BelongsTo](BelongsTo-relation.md)
|
|
141
|
+
- [ReferencesMany](ReferencesMany-relation.md)
|
|
141
142
|
|
|
142
143
|
- Name of the source model (`sourceModel`). Prompts a list of available models
|
|
143
144
|
to choose from as the source model of the relation.
|
package/site/Relations.md
CHANGED
|
@@ -45,6 +45,7 @@ Here are the currently supported relations:
|
|
|
45
45
|
- [BelongsTo](BelongsTo-relation.md)
|
|
46
46
|
- [HasOne](HasOne-relation.md)
|
|
47
47
|
- [HasManyThrough](HasManyThrough-relation.md)
|
|
48
|
+
- [ReferencesMany](ReferencesMany-relation.md)
|
|
48
49
|
|
|
49
50
|
{% include note.html content="
|
|
50
51
|
The `hasMany` relation may alternatively be implemented using the
|
|
@@ -26,6 +26,6 @@ constructor(options: ApiConnectSpecOptions, appMetadata?: ApplicationMetadata);
|
|
|
26
26
|
| Parameter | Type | Description |
|
|
27
27
|
| --- | --- | --- |
|
|
28
28
|
| options | [ApiConnectSpecOptions](./apiconnect.apiconnectspecoptions.md) | |
|
|
29
|
-
| appMetadata | [ApplicationMetadata](./core.applicationmetadata.md) |
|
|
29
|
+
| appMetadata | [ApplicationMetadata](./core.applicationmetadata.md) | <i>(Optional)</i> |
|
|
30
30
|
|
|
31
31
|
|
|
@@ -18,7 +18,7 @@ permalink: /doc/en/lb4/apidocs.authentication-jwt.myuserservice.html
|
|
|
18
18
|
```typescript
|
|
19
19
|
export declare class MyUserService implements UserService<User, Credentials>
|
|
20
20
|
```
|
|
21
|
-
<b>Implements:</b> [UserService](./authentication.userservice.md)<!-- --><[User](./authentication-jwt.user.md)<!-- -->, [Credentials](./authentication-jwt.credentials.md)
|
|
21
|
+
<b>Implements:</b> [UserService](./authentication.userservice.md)<!-- --><[User](./authentication-jwt.user.md)<!-- -->, [Credentials](./authentication-jwt.credentials.md)
|
|
22
22
|
|
|
23
23
|
## Constructors
|
|
24
24
|
|
|
@@ -25,6 +25,6 @@ constructor(data?: Partial<RefreshToken>);
|
|
|
25
25
|
|
|
26
26
|
| Parameter | Type | Description |
|
|
27
27
|
| --- | --- | --- |
|
|
28
|
-
| data | Partial<[RefreshToken](./authentication-jwt.refreshtoken.md)<!-- -->> |
|
|
28
|
+
| data | Partial<[RefreshToken](./authentication-jwt.refreshtoken.md)<!-- -->> | <i>(Optional)</i> |
|
|
29
29
|
|
|
30
30
|
|
|
@@ -18,7 +18,7 @@ permalink: /doc/en/lb4/apidocs.authentication-jwt.refreshtokenrepository.html
|
|
|
18
18
|
```typescript
|
|
19
19
|
export declare class RefreshTokenRepository extends DefaultCrudRepository<RefreshToken, typeof RefreshToken.prototype.id, RefreshTokenRelations>
|
|
20
20
|
```
|
|
21
|
-
<b>Extends:</b> [DefaultCrudRepository](./repository.defaultcrudrepository.md)<!-- --><[RefreshToken](./authentication-jwt.refreshtoken.md)<!-- -->, typeof [RefreshToken.prototype.id](./authentication-jwt.refreshtoken.id.md)<!-- -->, [RefreshTokenRelations](./authentication-jwt.refreshtokenrelations.md)
|
|
21
|
+
<b>Extends:</b> [DefaultCrudRepository](./repository.defaultcrudrepository.md)<!-- --><[RefreshToken](./authentication-jwt.refreshtoken.md)<!-- -->, typeof [RefreshToken.prototype.id](./authentication-jwt.refreshtoken.id.md)<!-- -->, [RefreshTokenRelations](./authentication-jwt.refreshtokenrelations.md)
|
|
22
22
|
|
|
23
23
|
## Constructors
|
|
24
24
|
|
|
@@ -25,6 +25,6 @@ constructor(data?: Partial<User>);
|
|
|
25
25
|
|
|
26
26
|
| Parameter | Type | Description |
|
|
27
27
|
| --- | --- | --- |
|
|
28
|
-
| data | Partial<[User](./authentication-jwt.user.md)<!-- -->> |
|
|
28
|
+
| data | Partial<[User](./authentication-jwt.user.md)<!-- -->> | <i>(Optional)</i> |
|
|
29
29
|
|
|
30
30
|
|
|
@@ -25,6 +25,6 @@ constructor(data?: Partial<UserCredentials>);
|
|
|
25
25
|
|
|
26
26
|
| Parameter | Type | Description |
|
|
27
27
|
| --- | --- | --- |
|
|
28
|
-
| data | Partial<[UserCredentials](./authentication-jwt.usercredentials.md)<!-- -->> |
|
|
28
|
+
| data | Partial<[UserCredentials](./authentication-jwt.usercredentials.md)<!-- -->> | <i>(Optional)</i> |
|
|
29
29
|
|
|
30
30
|
|
|
@@ -18,7 +18,7 @@ permalink: /doc/en/lb4/apidocs.authentication-jwt.usercredentialsrepository.html
|
|
|
18
18
|
```typescript
|
|
19
19
|
export declare class UserCredentialsRepository extends DefaultCrudRepository<UserCredentials, typeof UserCredentials.prototype.id, UserCredentialsRelations>
|
|
20
20
|
```
|
|
21
|
-
<b>Extends:</b> [DefaultCrudRepository](./repository.defaultcrudrepository.md)<!-- --><[UserCredentials](./authentication-jwt.usercredentials.md)<!-- -->, typeof [UserCredentials.prototype.id](./authentication-jwt.usercredentials.id.md)<!-- -->, [UserCredentialsRelations](./authentication-jwt.usercredentialsrelations.md)
|
|
21
|
+
<b>Extends:</b> [DefaultCrudRepository](./repository.defaultcrudrepository.md)<!-- --><[UserCredentials](./authentication-jwt.usercredentials.md)<!-- -->, typeof [UserCredentials.prototype.id](./authentication-jwt.usercredentials.id.md)<!-- -->, [UserCredentialsRelations](./authentication-jwt.usercredentialsrelations.md)
|
|
22
22
|
|
|
23
23
|
## Constructors
|
|
24
24
|
|
|
@@ -18,7 +18,7 @@ permalink: /doc/en/lb4/apidocs.authentication-jwt.userrepository.html
|
|
|
18
18
|
```typescript
|
|
19
19
|
export declare class UserRepository extends DefaultCrudRepository<User, typeof User.prototype.id, UserRelations>
|
|
20
20
|
```
|
|
21
|
-
<b>Extends:</b> [DefaultCrudRepository](./repository.defaultcrudrepository.md)<!-- --><[User](./authentication-jwt.user.md)<!-- -->, typeof [User.prototype.id](./authentication-jwt.user.id.md)<!-- -->, [UserRelations](./authentication-jwt.userrelations.md)
|
|
21
|
+
<b>Extends:</b> [DefaultCrudRepository](./repository.defaultcrudrepository.md)<!-- --><[User](./authentication-jwt.user.md)<!-- -->, typeof [User.prototype.id](./authentication-jwt.user.id.md)<!-- -->, [UserRelations](./authentication-jwt.userrelations.md)
|
|
22
22
|
|
|
23
23
|
## Constructors
|
|
24
24
|
|