确保环回模型中的唯一字段值

时间:2014-09-19 06:48:51

标签: 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": []
}

我试过在那里搜索文档和其他示例但没有成功。 我能想到的一个解决方案是,为create函数创建一个remoteHook,并在插入之前验证这个字段,但是寻找其他方法。

3 个答案:

答案 0 :(得分:24)

不确定这是否是获得唯一性的更好方法,但you can find here有关索引模型的文档。

只需在您想要的字段上添加唯一索引,瞧!

对于您的模型,那将是:

{
  ...
    "genericId": {
      "type": "string",
      "required": True,
      "index": {"unique": true} 
    },
 ...
}

但是,如果genericId字段是模型的实际ID,我建议您将其声明为这样,这样您就可以使用findById方法,并避免创建重复{{1如果你没有在模型中声明任何内容,就会发生这种情况。

id

答案 1 :(得分:23)

common/models/post.js

中设置validation规则
Post.validatesUniquenessOf('genericId');

答案 2 :(得分:1)

Lookback v4解决方案如下:

@model()
export class Client extends Entity {

  @property({
    type: 'string',
    required: true,
    index: {
      unique: true,
    },
  })
  name: string;

}