水线UUID类型和验证

时间:2015-01-02 02:44:57

标签: validation model sails.js uuid waterline

我想创建一个“客户”模型,其中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 个答案:

答案 0 :(得分:3)

我找到了完全相同的方法,并发现了两种方法。

  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
        },
        // ...
    }
    

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

    参考:Feature Request: GUIDs as Primary Keys

  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();
    }
    

    参考:

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

    希望这有帮助。