水线 UUID 类型和验证



我想创建一个"客户"模型,该模型将uuid字段作为主键。这似乎很简单,但并不是因为 Waterline 不包含任何本机验证器。

如何编辑此代码,以便我可以将uuid作为此模型的唯一主键?

module.exports = {
  identity: 'customer',
  connection: 'mysql',
  attributes: {
    // Properties
    uuid: {
      type: 'string',
      primaryKey: true,
      unique: true,
      index: true,
      uuidv4: true,
    },
    firstName: {
      type: 'string',
    },
    // …
  }
};

多谢。

我正在寻找做完全相同的事情的方法,并发现了两种方法。

  1. 通过使用类似node-uuid的包

    var uuid = require('node-uuid');
    

    ,然后在模型中

    autoPK: false,
    attributes: {
        uuid: {
            type: 'string',
            primaryKey: true,
            defaultsTo: function (){ return uuid.v4(); },
            unique: true,
            index: true,
            uuidv4: true
        },
        // ...
    }
    

    将自动PK设置为false是为了防止水线自动生成id。

    参考:功能请求:GUID 作为主键

  2. 通过使用 node-uuidbeforeCreate 等包

    var uuid = require('node-uuid');
    

    ,然后在模型中

    autoPK: false,
    attributes: {
        uuid: {
            type: 'string',
            primaryKey: true,
            unique: true,
            index: true,
            uuidv4: true
        },
        // ...
    },
    beforeValidate: function(values, next) {
        values.uuid = uuid.v4();
        next();
    }
    

    参考:

    • 如何编写帆函数以在控制器中使用?
    • 创建时的回调

我更喜欢第一个,因为它更简单,但这取决于。

希望这有帮助。

相关内容

  • 没有找到相关文章

最新更新