web-dev-qa-db-ja.com

Sequelize.STRINGの長さを定義するにはどうすればよいですか?

Sequelizeでデータ型の長さを定義したい。私のソースコードがあります:

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

データ型varchar(255)のpublic_idでテーブルプロファイルを作成します。

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

ドキュメントとスタックを検索しましたが、答えが見つかりませんでした...

どうすればよいですか?

30
gusera2334967

documentation で言及されているように、以下を使用します。

Sequelize.STRING(32) 
46

まず、デザインを少しだけ考え直す必要があると思います。基本的なポイントは、スペースを節約するためだけではなく、長さの制約にも意味があるということです。 PostgreSQLは 'A' :: varchar(10)を 'A' :: textとは異なる方法で格納しません(どちらも可変長テキスト文字列として格納され、長さ指定子およびその他の値とともに、格納された値が格納されている場合のみメタデータ)、したがって、スペースを節約するためではなく、実際に機能することができる最も長いサイズを使用し、実質的な適用のためにその長さを使用する必要があります。疑問がある場合は、制限しないでください。宛名ラベルに適合することを確認する必要がある場合は、適切に制約してください。

次に、上記のDankohnの回答:

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

このような強制をフロントエンドに追加する方法です。繰り返しになりますが、そのような強制は、現時点で良い考えのように見えるだけでなく、必要なものに基づいている必要があります。一般に、制約を緩和するよりも制約を緩和する方が簡単ですが、文字列の長さについては、本当に簡単です。逆方向に物事を行います。

他のアプリケーションでの使用に関しては、システムカタログで制約情報を調べて、高度なテリトリーに分類したいと思うでしょう。

6
Chris Travers