2013-04-30 15 views
24

Chcę zdefiniować długość typu danych w sequelu. Tam jest mój kod źródłowy:Jak zdefiniować długość Sequelize.STRING?

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

stworzy profile stół z public_id z typu danych varchar (255).

Chciałbym zdefiniować public_id z varchar (32).

Szukałem na dok i stosu, ale nie mógł znaleźć żadnej odpowiedzi ...

Jak mogę to zrobić proszę?

Odpowiedz

5

Po pierwsze, myślę, że trzeba trochę przemyśleć swój projekt. Podstawową kwestią jest to, że ograniczenia długości powinny być znaczące, a nie tylko w celu zaoszczędzenia miejsca. PostgreSQL nie przechowuje "A" :: varchar (10) inaczej niż robi to tekst "A" :: (oba są przechowywane jako ciągi tekstowe o zmiennej długości, tylko tak długo, jak przechowywana jest wartość, wraz ze specyfikatorem długości i kilkoma innymi metadane), więc powinieneś użyć najdłuższego rozmiaru, który może dla ciebie pracować, i wykorzystaj długości do merytorycznego egzekwowania, zamiast oszczędzać miejsce. W razie wątpliwości nie ograniczaj. Kiedy musisz upewnić się, że pasuje do etykiety mailingowej, odpowiednio ograniczaj.

drugie odpowiedź Dankohn jest powyżej:

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

jest jak można następnie dodać do egzekwowania takiego front-end. Ponownie, takie egzekwowanie powinno opierać się na tym, co wiesz, czego potrzebujesz, nie tylko na tym, co wydaje się być dobrym pomysłem w tym czasie, i podczas gdy zazwyczaj łatwiej jest rozluźnić ograniczenia niż je dokręcić, na długość sznurka, to naprawdę nie ma sensu, aby robić rzeczy w inny sposób.

Jeśli chodzi o używanie takich aplikacji w innych aplikacjach, prawdopodobnie warto przejrzeć informacje o ograniczeniach w katalogach systemowych, dzięki czemu można uzyskać zaawansowany obszar.