L'importanza della validazione dei dati nelle app MEAN

L'importanza della validazione dei dati nelle app MEAN

Se non si specificano regole di validazione coerenti si rischia di avere un database MongoDB assolutamente inaffidabile.

Consideriamo il seguente schema:


{
    name: String,
    items: Array
}

items è un array di oggetti. Nelle nostre migliori intenzioni ciascun oggetto dovrebbe essere strutturato come segue:


{
  title: 'Test',
  value: 5
}

Ma in una route delle nostre API otteniamo un errore 500:


app.get('/api/documents/titles', function(req, res) {
    Docs.find().sort({name: 1}).then(function(results) {
      let titles = [];
      results.forEach(function(result) {
         let items = result.items;
         items.forEach(function(item) {
             titles.push(item.title.toLowerCase()); // Errore 500
         });
      });
      res.json(titles);
    }).catch(function(err) {
        res.json(err);
    });
});

L'esempio, volutamente ridondante, ci mostra come in realtà si presenta il nostro array di oggetti:


[
    {
        title: 'Test',
        value: 5
    },
    {
        title: null,
        value: 8
    }
]

Quindi abbiamo invocato il metodo .toLowerCase() sul valore null, da cui l'errore. La soluzione è semplice:


{
    name: String,
    items: [
      {
          title: String,
          value: Number
      }
    ]
}

In questo modo i dati non potranno essere salvati se non corrispondono ai criteri specificati.

Torna su