【发布时间】:2016-08-06 14:55:39
【问题描述】:
Loopback 使用序列号作为模型 ID。我可以在服务器端使用自己的 ID 生成器吗?我该怎么做呢?
【问题讨论】:
标签: loopbackjs strongloop
Loopback 使用序列号作为模型 ID。我可以在服务器端使用自己的 ID 生成器吗?我该怎么做呢?
【问题讨论】:
标签: loopbackjs strongloop
如果您使用 Loopback 4,那么这是在主键中生成 UUID 的设置。 在你的模型中改变这个。
@property({
type: 'string',
id: true,
defaultFn: 'uuidv4',
}) id?: 字符串;
这是在您的表中生成唯一 ID 的方法。
【讨论】:
可以在 model definition file 中将 Loopback 生成器(guid、uuid、...)指定为 id 属性的默认函数。
guid 示例:
{
"name": "ModelName",
"base": "PersistedModel",
"idInjection": false,
"properties": {
"id": {
"type": "string",
"id": true,
"defaultFn": "guid"
}
},
"validations": [],
"relations": {},
"acls": [],
"methods": {}
}
据我所知,您还不能在那里指定您自己的默认函数。见related github issue。
如果您想要更高级的行为(例如您自己的生成器),您可以创建 models/model-name.js 文件并扩展模型的构造函数。
【讨论】:
是的,您需要做一些事情:
在对应的model.json中设置"idInjection": false关闭自动id注入
将您想要的属性添加到模型中,然后通过在 model.json 中的属性上设置 "id": true 或在 composer 中选择属性旁边的径向 id 将其设置为 id
生成并注入 id,可能在 before save (https://docs.strongloop.com/display/public/LB/Operation+hooks) 或 mixin (https://docs.strongloop.com/display/public/LB/Defining+mixins) 上使用操作挂钩
【讨论】: