复合ID如何在Loopback中工作?

时间:2017-04-19 09:10:10

标签: mongodb loopback

我正在尝试使用Loopback 3.0.0MongoDB实现复合ID。每对product_id/keyword都应该是唯一的......

我查看官方文档:

https://loopback.io/doc/en/lb3/Model-definition-JSON-file.html#data-mapping-properties

这是我的模特:

{
  "name": "comparative",
  "plural": "comparative",
  "base": "PersistedModel",
  "idInjection": true,
  "options": {
     "validateUpsert": true
   },
  "properties": {
    "product_id": {
      "id": true,
      "type": "string",
      "required": true
    },
    "keyword": {
      "id": true,
      "type": "string",
      "required": true
    }
  },
  "validations": [],
  "relations": {},
  "acls": [],
  "methods": {}
}

尽管我尝试制作product_id / keyword的复合ID失败了。

当我发帖时:

// 1st POST Success.
{
  "product_id": "string",
  "keyword": "string"
}
// 2nd POST Success.
{
  "product_id": "string1",
  "keyword": "string"
}
// 3rd POST FAILED -> I want it to success
{
  "product_id": "string",
  "keyword": "string1"
}

有什么想法吗?

即使在那之后,我还需要保留一个自动生成的MongoDB id来跟踪对象。

我试过“idInjection”,没有使用复合ID ...(没有生成任何东西......) 如果我将另一个字段“id”与生成的set添加为true,那么复合id根本不起作用(与之前的部分工作相反)

谢谢,

2 个答案:

答案 0 :(得分:1)

您可以在product_idkeyword之间声明一个复合索引:

https://loopback.io/doc/en/lb3/Model-definition-JSON-file.html#indexes

{
  "name": "comparative",
  "plural": "comparative",
  "base": "PersistedModel",
  "idInjection": true,
  "options": {
     "validateUpsert": true
   },
  "properties": {
    "product_id": {
      "type": "string",
      "required": true
    },
    "keyword": {
      "type": "string",
      "required": true
    }
  },
  "validations": [],
  "relations": {},
  "acls": [],
  "methods": {},
  "indexes": {
    "productid_keyword_index": {
      "keys": {
        "product_id": 1, 
        "keyword": -1
      }, 
      "options": {
        "unique": true
      }
    }
  }
}

答案 1 :(得分:0)

您不必将id: true放入属性中。如果您不想要默认标识,则仅对单个字段执行此操作。 mongo中的_id

"properties": {
    "product_id": {
      "type": "string",
      "required": true
    },
    "keyword": {
      "type": "string",
      "required": true
    }
  }

我假设您有另一个模型产品,您想要与此模型相关联。为了实现这一点,添加关系

检查this环回文档。

希望这有帮助