带有sails-mysql的Waterline BIGINT类型

时间:2017-04-07 21:27:28

标签: mysql sails.js waterline

我想知道如何使用sails-mysql在水线模型中定义bigint类型?找不到任何适当的文档。似乎它不支持bigint类型,但我真的需要它。试图挖掘源代码我发现了一些谎言: https://github.com/balderdashy/sails-mysql/blob/987f4674785970951bc52becdfdb479864106da1/helpers/private/schema/build-schema.js#L29 但它仍然没有用。

module.exports = {
    attributes: {

        userId: {
            type: 'bigint',
            autoIncrement: true,
            primaryKey: true,
            unique: true,
        },
   }
};

这个仍然在数据库中创建一个整数字段。

3 个答案:

答案 0 :(得分:3)

在挖掘了源代码之后,我发现我必须为该字段设置一个名为 size 的额外属性。将其设置为64将导致水线创建 BIGINT 字段。

module.exports = {
    attributes: {

        userId: {
            type: 'integer',
            size: 64, // waterline will translate this as bigint
            autoIncrement: true,
            primaryKey: true,
            unique: true,
        },
   }
};

答案 1 :(得分:-1)

另一种方法是使用以下属性:

{
   type: 'string',
   columnType: 'bigint'
}

这将忽略Waterline数据类型,并直接强制Postgres / MySQL列数据类型。

答案 2 :(得分:-1)

Sails v1.0 +中的模型属性不允许使用属性size,但这似乎可行。我从the waterline librarycreatedAt属性的定义中提取了此信息(在撰写本文时是485行)。

module.exports = {
  attributes: {
    timeOfDay: {
      type: 'number',
      autoMigrations: { columnType: '_numbertimestamp' }
    }
  }
};