2013-04-30 5 views
24

Я хочу определить длину типа данных в sequelize. Существует мой исходный код:Как определить длину Sequelize.STRING?

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

Это создать таблицу профилей с public_id с типом данных VARCHAR (255).

Я хотел бы определить public_id с varchar (32).

Я искал на документ и стек, но не смог найти ответ ...

Как я могу это сделать, пожалуйста?

ответ

5

Во-первых, я думаю, вам нужно немного переосмыслить свой дизайн. Основной момент заключается в том, что ограничения длины должны быть значимыми, а не просто для экономии места. PostgreSQL не хранит «A» :: varchar (10) иначе, чем текст «A» :: (они сохраняются как текстовые строки переменной длины, только до тех пор, пока значение сохраняется, а также спецификатор длины и некоторые другие метаданные), поэтому вы должны использовать самый длинный размер, который может работать для вас, и использовать длину для существенного обеспечения, а не для экономии места. Когда вы сомневаетесь, не сдерживайте. Когда вам нужно убедиться, что он подходит на ярлыке рассылки, ограничьте его соответствующим образом.

Во-вторых ответ Dankohn в выше:

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

, как вы бы затем добавить такое приведение в исполнение к переднему концу. Опять же, такое принуждение должно основываться на том, что вы знаете, что вам нужно, а не только на том, что кажется хорошей идеей в то время, и в то время как вообще легче ослабить ограничения, чем ужесточить их, для длины строки, это действительно непросто делать вещи по-другому.

Как для использования в других приложениях, вы, вероятно, захотите найти информацию об ограничениях в системных каталогах, что приведет вас к определенной территории.

Смежные вопросы