-
Notifications
You must be signed in to change notification settings - Fork 1.1k
Closed
Labels
Description
Steps to reproduce
- Create sample model with id/name field
- Create another sample model with id/name field
- Create relation:
lb4 relation --sourceModel=Model --destinationModel=ModelTwo --foreignKeyName=model_two_id --relationType=belongsTo --relationName=relation_name -y
Current Behavior
When relationName is used as custom value, controller that is generated by cli have wrong reference to relation, ignoring value that i provide by cli
Expected Behavior
Correct reference to relation inside generated controller.
Additional information
linux x64 10.18.1
bash-4.4# npm ls --prod --depth 0 | grep loopback
+-- @loopback/authentication@4.1.1
+-- @loopback/boot@2.0.2
+-- @loopback/context@3.2.0
+-- UNMET PEER DEPENDENCY @loopback/core@2.2.0
+-- @loopback/openapi-v3@3.1.1
+-- UNMET PEER DEPENDENCY @loopback/repository@2.0.2
+-- @loopback/rest@3.1.0
+-- @loopback/rest-explorer@2.0.2
+-- @loopback/service-proxy@2.0.2
+-- loopback-connector-mysql@5.4.3
npm ERR! missing: @firebase/app@0.6.0, required by b3api@1.0.0
npm ERR! peer dep missing: @loopback/core@^1.12.0, required by @loopback/model-api-builder@2.0.2
npm ERR! peer dep missing: @loopback/repository@^1.16.0, required by @loopback/model-api-builder@2.0.2
npm ERR! extraneous: @firebase/app@0.6.0 /var/www/angularnoderestfulservice/b3api/node_modules/@firebase/app
npm ERR! missing: @types/node@10.17.17, required by @types/node-fetch@2.5.5
npm ERR! missing: @types/node@10.17.17, required by @types/tunnel@0.0.1
npm ERR! peer dep missing: @loopback/core@^1.12.0, required by @loopback/model-api-builder@2.0.2
npm ERR! peer dep missing: @loopback/core@^1.12.0, required by @loopback/model-api-builder@2.0.2
npm ERR! peer dep missing: @loopback/core@^1.12.0, required by @loopback/model-api-builder@2.0.2
npm ERR! peer dep missing: @loopback/repository@^1.16.0, required by @loopback/model-api-builder@2.0.2
npm ERR! peer dep missing: @loopback/core@^1.12.0, required by @loopback/model-api-builder@2.0.2
npm ERR! peer dep missing: @loopback/repository@^1.16.0, required by @loopback/model-api-builder@2.0.2
npm ERR! peer dep missing: @loopback/core@^1.12.0, required by @loopback/model-api-builder@2.0.2
npm ERR! peer dep missing: @loopback/core@^1.12.0, required by @loopback/model-api-builder@2.0.2
npm ERR! peer dep missing: @loopback/core@^1.12.0, required by @loopback/model-api-builder@2.0.2
npm ERR! missing: @types/node@10.17.17, required by @types/fs-extra@8.1.0
npm ERR! missing: @types/node@10.17.17, required by protobufjs@6.8.9
Related Issues
After some investigation in belive that inside packages/cli/generators/relation/templates/controller-relation-template-belongs-to.ts.ejs
import {
repository,
} from '@loopback/repository';
import {
param,
get,
getModelSchemaRef,
} from '@loopback/rest';
import {
<%= sourceModelClassName %>,
<%= targetModelClassName %>,
} from '../models';
import {<%= sourceRepositoryClassName %>} from '../repositories';
export class <%= controllerClassName %> {
constructor(
@repository(<%= sourceRepositoryClassName %>)
public <%= paramSourceRepository %>: <%= sourceRepositoryClassName %>,
) { }
@get('/<%= sourceModelPath %>/{id}/<%= targetModelName %>', {
responses: {
'200': {
description: '<%= targetModelClassName %> belonging to <%= sourceModelClassName %>',
content: {
'application/json': {
schema: {type: 'array', items: getModelSchemaRef(<%= targetModelClassName %>)},
},
},
},
},
})
async get<%= targetModelClassName %>(
@param.path.<%= sourceModelPrimaryKeyType %>('id') id: typeof <%= sourceModelClassName %>.prototype.<%= sourceModelPrimaryKey %>,
): Promise<<%= targetModelClassName %>> {
return this.<%= paramSourceRepository %>.<%= paramTargetModel %>(id);
}
}
paramTargetModel should be replaced as relationPropertyName like in other templates