Sequelizeでデータ型の長さを定義したい。私のソースコードがあります:
var Profile = sequelize.define('profile', {
public_id: Sequelize.STRING,
label: Sequelize.STRING
})
データ型varchar(255)のpublic_idでテーブルプロファイルを作成します。
Varchar(32)でpublic_idを定義したいと思います。
ドキュメントとスタックを検索しましたが、答えが見つかりませんでした...
どうすればよいですか?
documentation で言及されているように、以下を使用します。
Sequelize.STRING(32)
まず、デザインを少しだけ考え直す必要があると思います。基本的なポイントは、スペースを節約するためだけではなく、長さの制約にも意味があるということです。 PostgreSQLは 'A' :: varchar(10)を 'A' :: textとは異なる方法で格納しません(どちらも可変長テキスト文字列として格納され、長さ指定子およびその他の値とともに、格納された値が格納されている場合のみメタデータ)、したがって、スペースを節約するためではなく、実際に機能することができる最も長いサイズを使用し、実質的な適用のためにその長さを使用する必要があります。疑問がある場合は、制限しないでください。宛名ラベルに適合することを確認する必要がある場合は、適切に制約してください。
次に、上記のDankohnの回答:
var Profile = sequelize.define('PublicID', {
public_id: {
validate: { len: [0,32] })
このような強制をフロントエンドに追加する方法です。繰り返しになりますが、そのような強制は、現時点で良い考えのように見えるだけでなく、必要なものに基づいている必要があります。一般に、制約を緩和するよりも制約を緩和する方が簡単ですが、文字列の長さについては、本当に簡単です。逆方向に物事を行います。
他のアプリケーションでの使用に関しては、システムカタログで制約情報を調べて、高度なテリトリーに分類したいと思うでしょう。