我想创建一个“客户”模型,其中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',
},
// …
}
};
非常感谢。
答案 0 :(得分:3)
我找到了完全相同的方法,并发现了两种方法。
使用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。
使用node-uuid
和beforeCreate
等
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();
}
参考:
我更喜欢第一个因为它更简单,但这取决于。
希望这有帮助。