47

我想在 sequelize 中定义一个数据类型的长度。有我的源代码:

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

它创建一个带有数据类型 varchar(255) 的 public_id 的表配置文件。

我想用 varchar(32) 定义一个 public_id。

我搜索了文档和堆栈,但找不到任何答案...

请问我该怎么做?

4

2 回答 2

83

正如文档中提到的,使用:

Sequelize.STRING(32) 
于 2013-10-13T04:18:53.030 回答
11

首先,我认为您需要重新考虑您的设计。基本点是长度限制应该是有意义的,而不仅仅是为了节省空间。PostgreSQL 存储 'A'::varchar(10) 与存储 'A'::text 没有任何不同(两者都存储为可变长度的文本字符串,只要存储的值,以及长度说明符和其他一些元数据),因此您应该使用可以为您工作的最长大小,并将长度用于实质性执行而不是节省空间。当有疑问时,不要拘束。当您需要确保它适合邮寄标签时,请适当限制。

其次丹科恩的回答上面:

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

是您如何将这种强制措施添加到前端。同样,这种强制执行应该基于您知道自己需要什么,而不仅仅是当时看起来是个好主意,虽然放松约束通常比收紧约束更容易,但对于字符串长度来说,这真的是不费吹灰之力以另一种方式做事。

至于在其他应用程序中使用此类,您可能希望在系统目录中查找约束信息,这可以让您进入某种高级领域。

于 2013-05-30T03:02:17.707 回答