loopbackio / loopbackio/loopback-next

Confusing @model() syntax

Abierto
#2,142 6 comentarios 2 reacciones 0 asignados Ver en GitHub

Nadie ha tomado este issue todavía.

developer-experience feature good first issue help wanted
Lenguaje dominante
TypeScript
Estrellas
5.1k
Forks
1.1k
Merge medio
2 d 21 h
PR fusionados (30 d)
27

Descripción

In LB3, users could specify model settings at two levels: as a root property or inside options property.

See https://stackoverflow.com/q/53307168/69868 for an example of LB3 syntax applied in an LB4 project:

@model({
  settings: {strict: false},
  name: 'client',
  plural: 'clients',
  options: {
    mongodb: {
      collection: 'clients',
    },
  },
})
export class Client extends Entity {
  // ...
}

I am proposing to make two changes in LB4 to help users coming from LB3:

  1. Recognize options the same way as settings. In the example above, mongodb settings are not picked by LB4 now. With the proposed change in place, LB4 will set collection to clients as expected. Alternatively, tell the user setting options that they are trying to set an unsupported model-definition property. This can be done at compiler level too.

  2. Allow settings to be provided as top-level properties, for example:

    @model({
      name: 'client',
      strict: false,
      mongodb: {
        collection: 'clients',
      },
    })
    export class Client extends Entity {
      // ...
    }
    

Guía de contribución

Abrir la guía de contribución

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Línea de trabajo

Comienza en el decorador @model() y sigue cómo LB4 lee la configuración del modelo, comparando ese comportamiento con los ejemplos de LB3 del issue. Determina si las opciones deben aceptarse o rechazarse y si se deben admitir configuraciones de nivel superior; se considera terminado cuando el comportamiento elegido está implementado y verificado para los ejemplos de Client.

Escrito por el modelo de indexación a partir del texto del issue.

Evaluación

Stack tecnológico
typescript
Área
backend-api-design
Tipo de issue
Nueva funcionalidad
Dificultad
5/5
Tiempo estimado
Más de una semana
Estado de actividad
Estancado
Claridad
Bastante claro
Aptitud para principiantes
25/100

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.