Nis*_*ant 18 json node.js strongloop loopbackjs
如何确保环回模型中特定字段的唯一性.下面是模型Post,我在其中有一个字段genericId,我希望它在数据库中是唯一的,并且在重复键插入时循环到错误.
{
"name": "Post",
"plural": "Post",
"base": "PersistedModel",
"properties": {
"genericId": {
"type": "string",
"required":True
},
"moderatedAt": {
"type": "date"
}
},
"validations": [],
"acls": [],
"methods": []
}
Run Code Online (Sandbox Code Playgroud)
我试过在那里搜索文档和其他示例但没有成功.我能想到的一个解决方案是,为create函数创建一个remoteHook,并在插入之前验证这个字段,但是寻找其他方法.
Pan*_*olo 26
不确定它是否是实现唯一性的更好方法,但您可以在此处找到有关索引模型的文档.
只需在您想要的字段上添加一个唯一索引,瞧!
对于您的模型,那将是:
{
...
"genericId": {
"type": "string",
"required": True,
"index": {"unique": true}
},
...
}
Run Code Online (Sandbox Code Playgroud)
但是,如果该genericId
字段是模型的实际Id,我建议您将其声明为这样,因此您可以使用findById
方法,并且还可以避免创建重复id
字段,如果您未在模型中声明任何字段,则会发生这种情况.
{
...
"genericId": {
"type": "string",
"id": true, // Ensure uniqueness and avoid another model id field
"generated": true // Add this if you want Loopback to manage id content for you
},
...
}
Run Code Online (Sandbox Code Playgroud)
Iva*_*nZh 24
在您的中设置验证规则common/models/post.js
Post.validatesUniquenessOf('genericId');
Run Code Online (Sandbox Code Playgroud)
Lookback v4 解决方案如下所示:
@model()
export class Client extends Entity {
@property({
type: 'string',
required: true,
index: {
unique: true,
},
})
name: string;
}
Run Code Online (Sandbox Code Playgroud)
然后你必须更新你的架构:
npm run migrate
Run Code Online (Sandbox Code Playgroud)
或重新创建它:
npm run migrate -- --rebuild
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
12663 次 |
最近记录: |