我想创建一个"客户"模型,该模型将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',
},
// …
}
};
多谢。
我正在寻找做完全相同的事情的方法,并发现了两种方法。
-
通过使用类似
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 作为主键
-
通过使用
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(); }
参考:
- 如何编写帆函数以在控制器中使用?
- 创建时的回调
我更喜欢第一个,因为它更简单,但这取决于。
希望这有帮助。