如何定义Sequelize.STRING长度?

53

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

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

它创建了一个名为profiles的表,其中包含一个数据类型为varchar(255)的public_id。

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

我在文档和堆栈上搜索了,但是没有找到任何答案...

请问我该如何实现这个?

2个回答

96

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

Sequelize.STRING(32) 

3
数据类型的答案已移至 https://sequelize.org/master/manual/data-types.html。 - joe
3
乔的文档链接已经更改,请查看此链接代替:http://sequelize.org/master/manual/model-basics.html#strings - Abdullah Khaled
有没有可能在某个地方设置字符串的默认长度? - Sumit Wadhwa

14

首先,我认为你需要稍微重新考虑一下你的设计。基本点是长度限制应该是有意义的,而不仅仅是用来节省空间。PostgreSQL在存储 'A'::varchar(10) 和 'A'::text 时并没有区别(它们都以变长文本字符串的形式存储,只有被存储值那么长,同时还有一个长度说明符和一些其他元数据),因此你应该使用最长可以适用于你的大小,并且使用长度来实施具体规定,而不是为了节省空间。当你不确定时,就不要进行限制。当你需要确保它适合邮寄标签时,请适当限制。

其次,Dankohn的回答如下:

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

这就是如何在前端添加此类强制执行的方式。再次强调,此类强制执行应基于您知道所需的内容,而不仅仅是当时看起来好的想法。虽然通常放松约束比加紧更容易,但对于字符串长度来说,以另一种方式进行操作确实是一个明智的选择。

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


如何定义自定义错误消息,如果长度未达到最小长度或超过最大长度? - Mohammed Shahed

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接