2013-04-30 14 views
24

私は後継でデータ型の長さを定義します。 私のソースコードがあります:Sequelize.STRINGの長さを定義するにはどうすればよいですか?

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

これは、データ型はvarchar(255)とpublic_idとテーブルプロファイルを作成します。

私はpublic_idをvarchar(32)で定義したいと思います。

私はどのようにしてくださいことを行うことができます

...ドキュメントとスタック上で検索が、どの答えを見つけることができませんでしたか?

答えて

5

まず、デザインをちょっと考え直す必要があると思います。基本的なポイントは、スペースを節約するだけでなく、長さの制約が意味をなされていることです。 PostgreSQLは 'A' :: varchar(10)を 'A' :: textとは異なって格納しません(両方とも可変長テキスト文字列として保存され、長さ指定子とその他の値とともに格納されます)メタデータ)ので、あなたのために働くことができる最も長いサイズを使用し、スペースを節約するよりもむしろ実質的な強制の長さを使用する必要があります。疑いがあるときは、拘束しないでください。郵送用ラベルに収まるようにする必要がある場合は、適切に拘束してください。

第二に、上記Dankohnの答え:

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

あなたは、フロントエンドに、このような強制を追加する方法です。繰り返しますが、このような強制は、当時の良いアイデアのように思えるだけでなく、必要なことに基づいて行う必要があります。また、文字列の長さを制限するよりも制約を緩和する方が一般的に簡単ですが、他の方法でやること。

このような他のアプリケーションでは、システムカタログの制約情報を参照して、高度な領域に入るようにしたいと考えています。

32

それはdocumentationに記載されているとおり、使用:

Sequelize.STRING(32) 
関連する問題