2013-04-30 8 views
24

Ich möchte eine Länge eines Datentyps in Sequelize definieren. Es ist mein Quellcode:Wie definiere ich Sequelize.STRING Länge?

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

es sich um eine Tabelle Profile mit einem public_id mit einem Datentyp varchar (255) zu erstellen.

Ich möchte eine public_id mit varchar (32) definieren.

ich auf der doc gesucht und dem Stapel konnte aber keine Antwort nicht finden ...

Wie kann ich tun, bitte?

Antwort

5

Zuerst denke ich, dass Sie Ihr Design nur ein wenig überdenken müssen. Der grundlegende Punkt ist, dass Längenbeschränkungen sinnvoll sein sollten und nicht nur, um Platz zu sparen. PostgreSQL speichert 'A' :: varchar (10) nicht anders als 'A' :: text (beide werden als Textzeichenfolgen variabler Länge gespeichert, nur solange der Wert gespeichert ist, zusammen mit einem Längenbezeichner und einigen anderen Metadaten), also sollten Sie die längste Größe verwenden, die für Sie arbeiten kann, und die Längen für die inhaltliche Durchsetzung verwenden, anstatt Platz zu sparen. Im Zweifelsfall nicht einschränken. Wenn Sie sicherstellen müssen, dass es auf ein Versandetikett passt, müssen Sie entsprechend einschränken.

Zweitens Dankohn Antwort oben:

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

ist, wie Sie dann die Durchsetzung zu dem Front-End hinzufügen würde. Wiederum sollte eine solche Durchsetzung auf dem beruhen, was Sie wissen, nicht nur, was zu der Zeit eine gute Idee zu sein scheint, und während es im Allgemeinen einfacher ist, Einschränkungen zu lockern, als sie zu straffen, ist die Stringlänge wirklich ein Kinderspiel Dinge anders machen.

Wie für die Verwendung in anderen Anwendungen, möchten Sie wahrscheinlich die Constraint-Informationen in den Systemkatalogen nachschlagen, die Sie in eine Art fortgeschrittenes Territorium bringt.

32

Wie es in der documentation erwähnt wird, verwenden:

Sequelize.STRING(32)