如何确保环回模型中特定字段的唯一性.下面是模型Post,我在其中有一个字段genericId,我希望它在数据库中是唯一的,并且在重复键插入时循环到错误.
{ "name": "Post", "plural": "Post", "base": "PersistedModel", "properties": { "genericId": { "type": "string", "required":True }, "moderatedAt": { "type": "date" } }, "validations": [], "acls": [], "methods": [] }
我试过在那里搜索文档和其他示例但没有成功.我能想到的一个解决方案是,为create函数创建一个remoteHook,并在插入之前验证这个字段,但是寻找其他方法.
不确定它是否是实现唯一性的更好方法,但您可以在此处找到有关索引模型的文档.
只需在您想要的字段上添加一个唯一索引,瞧!
对于您的模型,那将是:
{ ... "genericId": { "type": "string", "required": True, "index": {"unique": true} }, ... }
但是,如果该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 }, ... }
在您的中设置验证规则common/models/post.js
Post.validatesUniquenessOf('genericId');