LoopBack: correggere l'errore 'Unknown column id in field list'

Mattepuffo's logo
LoopBack: correggere l'errore 'Unknown column id in field list'

LoopBack: correggere l'errore 'Unknown column id in field list'

Sto iniziando a sviluppare un REST service con LoopBack, e sono rimasto veramente estasiato dalle sue possibilità sviluppate in poco tempo!

Grazie alla sua CLI, è possibile fare tantissime cose scrivendo poco codice.

Ed il fatto che venga messa a disposizione una pagina per testare i servizi in maniera automatica (il cosidetto explorer) mi ha lasciato di stucco!

Detto ciò, qualche problematica la sto riscontrando.

Cominciamo con vedere il model che sto usando, precisando che è agganciato al mio db MariaDB, e che ha corrispondenza esatta con una tabella:

{
  "name": "movimenti",
  "plural": "movimenti",
  "base": "PersistedModel",
  "idInjection": true,
  "options": {
    "validateUpsert": true
  },
  "properties": {
    "mov_id": {
      "type": "number",
      "required": true
    },
    "mov_tipo": {
      "type": "string",
      "required": true
    },
    "mov_valore": {
      "type": "number",
      "required": true
    },
    "mov_causale_fk": {
      "type": "number",
      "required": true
    },
    "mov_conto_fk": {
      "type": "number",
      "required": true
    },
    "mov_data": {
      "type": "date",
      "required": true
    },
    "mov_note": {
      "type": "string"
    },
    "mov_utente_fk": {
      "type": "number",
      "required": true
    },
    "mov_aggiunta": {
      "type": "date",
      "required": true
    }
  },
  "validations": [],
  "relations": {},
  "acls": [],
  "methods": {}
}

Andando ad interrogare l'explorer, ottenevo questo errore:

"stack": "Error: ER_BAD_FIELD_ERROR: Unknown column 'id' in 'field list'

Su Stack Overflow (qui la discussione di riferimento) mi hanno detto che di default LoopBack aggiunge un campo id se nessuna delle proprietà del model ha questo nome; come nel mio caso, dove mov_id fa le veci del classico id.

La soluzione però è stata semplice:

{
  "name": "movimenti",
  "plural": "movimenti",
  "base": "PersistedModel",
  "idInjection": true,
  "options": {
    "validateUpsert": true
  },
  "properties": {
    "mov_id": {
      "type": "number",
      "id": true,
      "required": true
    },
    "mov_tipo": {
      "type": "string",
      "required": true
    },
    "mov_valore": {
      "type": "number",
      "required": true
    },
    "mov_causale_fk": {
      "type": "number",
      "required": true
    },
    "mov_conto_fk": {
      "type": "number",
      "required": true
    },
    "mov_data": {
      "type": "date",
      "required": true
    },
    "mov_note": {
      "type": "string"
    },
    "mov_utente_fk": {
      "type": "number",
      "required": true
    },
    "mov_aggiunta": {
      "type": "date",
      "required": true
    }
  },
  "validations": [],
  "relations": {},
  "acls": [],
  "methods": {}
}

E' bastato aggiungere questa riga al campo mov_id (o in generale a quello che fa le veci dell'id):

"id": true,

Non penso abbia bisogno di spiegazioni!

Enjoy!


Condividi

Commentami!