如何定义Sequelize.STRING长度?

时间:2013-04-30 08:09:16

标签: node.js postgresql string-length sequelize.js

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

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

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

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

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

我该怎么办呢?

2 个答案:

答案 0 :(得分:43)

documentation中所述,请使用:

Sequelize.STRING(32) 

答案 1 :(得分:5)

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

其次Dankohn的答案如上:

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

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

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