2013-04-30 57 views
24

我想在sequelize中定義一個數據類型的長度。 有我的源代碼:如何定義Sequelize.STRING長度?

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

它創建一個表的配置文件與數據類型爲varchar(255)一public_id。

我想用varchar(32)定義一個public_id。

我搜索的doc和堆棧,但找不到任何答案...

我怎麼能做到這一點嗎?

回答

5

首先,我認爲你需要重新考慮一下你的設計。基本的觀點是長度限制應該是有意義的,而不僅僅是爲了節省空間。 PostgreSQL不會將「A」:: varchar(10)存儲爲與「A」:: text不同的值(兩者都存儲爲可變長度的文本字符串,只要存儲的值與長度說明符一起存儲元數據),因此您應該使用可用於您的最長大小,並將長度用於實質性強制執行,而不是節省空間。如有疑問,請勿約束。當您需要確保它符合郵寄標籤時,請適當限制。

其次Dankohn的回答以上:

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

是你會怎麼那麼這樣的執法添加到前端。再次強調,這種執法應該基於你知道你需要的東西,而不僅僅是當時看起來是個好主意的東西,雖然放鬆約束比放鬆約束更容易,但對於字符串長度來說,這實在是一件容易的事情。以其他方式做事。對於在其他應用程序中使用這種類型,您可能需要在系統目錄中查找約束信息,這會讓您進入某種高級領域。

32

正如它在documentation中提到,使用:

Sequelize.STRING(32)