使用sequelize

时间:2016-09-19 18:24:25

标签: mysql json node.js orm sequelize.js

我无法找出是否存在重复行。我有3个表格,包含以下表格结构。

domaintable

--------------------
|  id     name     |
--------------------
|  1      car      |
|  2      student  | 
|__________________|

domaintableschema

-------------------------------------------
| id  domaintableId columnName   type     |
-------------------------------------------
|  1      1          model       string   |
|  2      1          year        string   |
|  3      2          name        string   |
|  4      2          gender      string   |
-------------------------------------------


domaintabledata

----------------------------------------------
| id   domaintableschemaId    row     value   |
----------------------------------------------
| 1       1                    1       Jaguar |
| 2       2                    1       2016   |
| 3       3                    1       Joe    |
| 4       4                    1       male   |
| 5       3                    2       Jake   |
| 6       4                    2       female |
|_____________________________________________|

在用户界面中,表格car和学生显示为域表。用户有权使用任何域架构创建更多域表。但是不允许用户将重复值插入域表数据中。要按照以下方式插入数据的API有效内容,假设用户想要插入值为maleJake的学生表。

{
 "0": {
   "domaintableschemaId": 4,
   "value": "male",
   "row": 3
  },
  "1": {
    "domaintableschemaId": 3,
    "value": "Joe",
    "row": 3
  }
}

我尝试了什么,我编写了以下查询以避免重复,但它并不适用于所有情况。这个方法,我形成了schemaId = [4, 3]value = [ "Joe", "male"]

SELECT * from domaintabledata where values in $value and schemaId in $schemaId返回rows数组,任何长度等于payload的数组元素都将决定是否存在重复。但是当我必须插入以下行时它将不起作用(注意:值相同,只有架构ID被尊重)

{
 "0": {
   "domaintableschemaId": 3,
   "value": "male",
   "row": 3
  },
  "1": {
    "domaintableschemaId": 4,
    "value": "Joe",
    "row": 3
  }
}

即使上述值不重复,我的解决方案也不允许插入,因为值相同且返回的行数不一,行的长度与要插入的行相同。请帮助我使用任何优雅的方法来防止插入重复值。我使用sequelize和sequelize-hierarchy作为ORM。

0 个答案:

没有答案