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