如何定义Sequelize.STRING长度?

gus*_*967 29 postgresql string-length node.js sequelize.js

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

var Profile = sequelize.define('profile', {
  public_id: Sequelize.STRING,
  label: Sequelize.STRING
})
Run Code Online (Sandbox Code Playgroud)

它使用带有数据类型varchar(255)的public_id创建表概要文件.

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

我在doc和堆栈上搜索但找不到任何答案......

我该怎么办?

Szy*_*ski 48

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

Sequelize.STRING(32) 
Run Code Online (Sandbox Code Playgroud)

  • Joe 的文档链接已被移动。检查这个http://sequelize.org/master/manual/model-basics.html#strings (3认同)
  • 数据类型的答案移至https://sequelize.org/master/manual/data-types.html (2认同)

Chr*_*ers 6

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

其次Dankohn的答案如下:

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

是你如何将这种强制执行添加到前端.同样,这样的强制执行应该基于你所知道你需要的东西,而不仅仅是当时看起来好主意的东西,虽然通常更容易放松约束而不是收紧它们,但是对于字符串长度来说,它真的是一个明智的选择.以另一种方式做事.

至于在其他应用程序中使用它,您可能希望在系统目录中查找约束信息,这会使您进入某种高级区域.