如何使用sequelize定义NVARCHAR(MAX)字段?

时间:2017-08-29 10:48:59

标签: sql-server node.js sequelize.js

使用node.js和sequelize vis-a-vis MSSQL,如何定义NVARCHAR(MAX)字段?

3 个答案:

答案 0 :(得分:6)

如果在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)

答案 1 :(得分:0)

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

答案 2 :(得分:0)

对于MYSQL:DataTypes.STRING(65535)

postgres最多支持1G的TEXT和VARCHAR。