SailsJS impede que dados indesejados entrem no banco de dados
-
21-12-2019 - |
Pergunta
Então, com o SailsJS você pode simplesmente colocar quaisquer dados antigos em seu modelo e colocá-los no banco de dados, mesmo que o item não esteja definido no attributes
objeto.
Existe alguma maneira de evitar que isso aconteça?parece bobagem tentar fazer um if
e então lançar erros porque haveria muitas coisas para parar de resolver.
Por exemplo, acabei de me deparar com o problema em que tenho uma lista de usuários e os estou exibindo através do angular ng-repeat
no frontend e quando eu put
os dados para salvar um usuário, ele também decide que "$$hashKey": "00I"
vai com eles também !
Então ele é salvo automaticamente no banco de dados e quando eu atualizo e obtenho os dados novamente, o "$$hashKey": "00I"
está voltando e, portanto, causando este erro
Erro:[ngRepeat:dupes] Duplicatas em um repetidor não são permitidas.Use a expressão 'Track by' para especificar teclas exclusivas.Repetidor:(chave, usuário) em Administradores | Filtro: Pesquisa de Usuários, Chave Duplicada:objeto:00I
Isso vem do angular.
obs.
até onde eu sei, o servidor está usando o disco de velas padrão
Solução
O modo padrão para modelos Sails.js é sem esquema, o que provavelmente não é o que você precisa.Então, tudo que você precisa fazer é adicionar o esquema ao seu modelo:
module.exports = {
schema: true,
attributes: {
// Define all your attributes here...
}
};
Depois disso, todos os valores que não estão descritos no attributes
será automaticamente filtrado durante o salvamento do modelo.