2013-04-30 10 views
24

Voglio definire una lunghezza di un tipo di dati in sequelize. C'è il mio codice sorgente:Come si definisce la lunghezza Sequelize.STRING?

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

E creare un profilo da tavola con public_id con un tipo di dati varchar (255).

Mi piacerebbe definire un public_id con varchar (32).

ho cercato su doc ​​e lo stack, ma non riusciva a trovare alcuna risposta ...

Come posso fare questo favore?

risposta

5

In primo luogo, penso che sia necessario ripensare il tuo design un po '. Il punto fondamentale è che i limiti di lunghezza dovrebbero essere significativi, non solo lì per risparmiare spazio. PostgreSQL non memorizza 'A' :: varchar (10) in modo diverso rispetto a 'A' :: text (entrambi sono memorizzati come stringhe di testo a lunghezza variabile, purché il valore memorizzato, insieme a un identificatore di lunghezza e qualche altro metadati), quindi dovresti usare la dimensione più lunga che può funzionare per te, e usare le lunghezze per l'applicazione sostanziale piuttosto che per risparmiare spazio. In caso di dubbio, non limitare. Quando è necessario assicurarsi che si adatti a un'etichetta postale, vincolare in modo appropriato.

In secondo luogo la risposta di Dankohn sopra:

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

è come si potrebbe quindi aggiungere tale dell'ordine per il front-end. Ancora una volta, tale applicazione dovrebbe essere basata su ciò che sai di cui hai bisogno, non solo su ciò che sembra una buona idea in quel momento, e mentre è generalmente più facile rilassare i vincoli che stringere loro, per la lunghezza della corda, è davvero un gioco da ragazzi per fai le cose dall'altra parte

Per quanto riguarda l'utilizzo di tali applicazioni in altre applicazioni, è probabile che si desideri cercare le informazioni sui vincoli nei cataloghi di sistema, il che consente di ottenere una sorta di territorio avanzato.

32

Come è menzionato nella documentation, utilizzare:

Sequelize.STRING(32) 
Problemi correlati