web-dev-qa-db-fra.com

Comment définir la longueur de Sequelize.STRING?

Je veux définir une longueur d'un type de données dans la suite. Il y a mon code source:

var Profile = sequelize.define('profile', {
  public_id: Sequelize.STRING,
  label: Sequelize.STRING
})

Il crée une table de profils avec un public_id avec un type de données varchar (255).

Je voudrais définir un public_id avec varchar (32).

J'ai cherché sur le doc et la pile mais je n'ai trouvé aucune réponse ...

Comment puis-je faire ça s'il vous plait?

30
gusera2334967

Comme cela est mentionné dans la documentation , utilisez:

Sequelize.STRING(32) 
46
Szymon Wygnański

Tout d'abord, je pense que vous devez repenser un peu votre conception. Le point fondamental est que les contraintes de longueur doivent être significatives, pas seulement là pour économiser de l'espace. PostgreSQL ne stocke pas 'A' :: varchar (10) différemment de 'A' :: text (les deux sont stockés sous forme de chaînes de texte de longueur variable, uniquement aussi longtemps que la valeur stockée, avec un spécificateur de longueur et quelques autres métadonnées), vous devez donc utiliser la taille la plus longue qui peut vous convenir et utiliser les longueurs pour une application substantielle plutôt que pour économiser de l'espace. En cas de doute, ne contraignez pas. Lorsque vous devez vous assurer qu'il tient sur une étiquette de publipostage, contraignez de manière appropriée.

Deuxièmement, la réponse de Dankohn ci-dessus:

var Profile = sequelize.define('PublicID', {
  public_id: {
  validate: { len: [0,32] })

est de savoir comment vous pouvez ensuite ajouter une telle application au front-end. Encore une fois, une telle application devrait être basée sur ce dont vous savez que vous avez besoin, pas seulement sur ce qui semble être une bonne idée à l'époque, et bien qu'il soit généralement plus facile de relâcher les contraintes que de les resserrer, pour la longueur de la chaîne, c'est vraiment une évidence faire les choses dans l'autre sens.

Quant à leur utilisation dans d'autres applications, vous voudrez probablement rechercher les informations sur les contraintes dans les catalogues système, ce qui vous place dans une sorte de territoire avancé.

6
Chris Travers