如何使用Sequelize定义一个NVARCHAR(MAX)字段?

8

在使用node.js和sequelize访问MSSQL时,如何定义一个NVARCHAR(MAX)类型的字段?


将MSSQL中的数据项转换为:convert(varchar(max),field) as field - 然而,使用max并不是一个好习惯,因为如果在关联的MS产品(如Access)中使用,则仅作为文本可用 - 在可能的情况下,我会将可用字符限制为最大255。 - jimmy8ball
谢谢,但我特别需要nvarchar(max)(用于存储JSON) - joniba
3个回答

19
如果在Sequelize中将数据类型设置为TEXT,它会自动将该字段转换为SQL Server数据库中的NVARCHAR(MAX)。

我在文档中找不到这个信息。

但是在Sequelize github repository的79到90行中提到了这一点。

这里粘贴代码片段:

    TEXT.prototype.toSql = function toSql() {
    // TEXT is deprecated in mssql and it would normally be saved as a non-unicode string.
    // Using unicode is just future proof
    if (this._length) {
      if (this._length.toLowerCase() === 'tiny') { // tiny = 2^8
        warn('MSSQL does not support TEXT with the `length` = `tiny` option. `NVARCHAR(256)` will be used instead.');
        return 'NVARCHAR(256)';
      }
      warn('MSSQL does not support TEXT with the `length` option. `NVARCHAR(MAX)` will be used instead.');
    }
    return 'NVARCHAR(MAX)';
  };

正如您所见,SQL Server不支持TEXT字段,因此它将其转换为NVARCHAR(MAX)


0

针对MYSQL: DataTypes.STRING(65535)

Postgres支持TEXT和VARCHAR的长度均可达到1G。


-1

只需使用Sequelize.STRING('MAX')作为类型


1
不行,无法工作:错误:在“MAX”附近有语法错误 (“sequelize”:“4.41.1”) - Skyrocker

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