Tenho um modelo chamado User mas o Sequelize procura a tabela USERS sempre que tento salvar no DB. Alguém sabe como definir Sequelize para usar nomes de tabelas no singular? Obrigado.
109
Tenho um modelo chamado User mas o Sequelize procura a tabela USERS sempre que tento salvar no DB. Alguém sabe como definir Sequelize para usar nomes de tabelas no singular? Obrigado.
user
é uma palavra reservada, você terá muitos problemas se realmente tentar criar uma tabela com esse nome.user
não é uma palavra reservada, mas uma palavra-chave. Embora você não encontre problemas ao usá-lo, é bom evitá-lo. dev.mysql.com/doc/refman/5.5/en/keywords.htmlRespostas:
Os documentos afirmam que você pode usar a propriedade
freezeTableName
.Por favor, dê uma olhada neste exemplo:
fonte
freezeTableName: true
não está funcionando na versão mais recente do sequelize. Alguma outra solução?freezeTableName
é que também evita que o sqlz coloque nomes de tabelas e colunas em letras minúsculas. O que significa que mais tarde, quando você estiver escrevendo SQL à mão para vasculhar os dados, terá que lidar com nomes de maiúsculas e minúsculas (o que quer que isso signifique para o seu dialeto). Na pg, significa ter que usar aspas duplas em todos os nomes de maiúsculas e minúsculas - yuk! Eu gostaria que pudéssemos cancelar a pluralização, mas manter a dobra de caixa ...define
tem atableName
opção de substituição explícita.freezeTableName: true
além demodelName: 'singularName'
Embora a resposta aceita seja correta, você pode fazer isso uma vez para todas as tabelas, em vez de ter que fazer isso separadamente para cada uma. Você simplesmente passa um objeto de opções semelhantes para o construtor Sequelize, assim:
Agora, quando você define suas entidades, não precisa especificar
freezeTableName: true
:fonte
Se você precisar de nomes de modelo diferentes para definições singulares e plurais, você pode passar o nome como um parâmetro nas opções de modelo.
Por favor, dê uma olhada neste exemplo:
isso retornará "pessoa" como um objeto quando um único registro está sendo consultado e "pessoas" como um array quando buscamos vários registros.
fonte