json-server 级联删除与键

2017-09-25  本文已影响72人  这是我用来记录技术的一个博客

json-server的增删改查 官网已经十分详尽,不多说

但是它没告诉我级联操作和主键相关的东东啊。。。也许后端人员清楚,但是后端谁用json-server啊。。。。我服

主键问题

拿官网的json来分析:

{
  "posts": [
    { "id": 1, "title": "json-server", "author": "typicode" }
  ],
  "comments": [
    { "id": 1, "body": "some comment", "postId": 1 }
  ],
  "profile": { "name": "typicode" }
}

我们需要知道的是:
所有的 一级 都是表。 如 posts comments
表中的id就是主键,这是默认的
把表的复数形式去掉,加上“Id”,在别的表中引用,就是外键
那么我们就知道了 posts和comments是如何关联的了

级联删除问题

级联删除的定义为:

外键的级联删除:如果父表中的记录被删除,则子表中对应的记录自动被删除
父表——被外键引用的表
子表——引用父表中的键作为外键的表

父表是posts
子表是comments

我来运行一下 delete http://localhost:3000/posts/1

Paste_Image.png

其json文件变成了

{
  "posts": [],
  "comments": [],
  "profile": {
    "name": "typicode"
  }
}

由此可见
json-server是可以做级联删除的

是否支持多级级联删除

我们的假数据如下:

{
  "grandFathers": [
    {
        "id":1,
        "name":"jack-grandFather"
    },
    {
        "id":2,
        "name":"tom-grandFather"
    }
  ],
  "fathers": [
    {
        "id":1,
        "name":"jack-father",
        "grandFatherId":1
    },
    {
        "id":2,
        "name":"tom-father",
        "grandFatherId":2
    }
  ],
  "sons": [
    {
        "id":1,
        "name":"jack",
        "fatherId":1
    },
    {
        "id":2,
        "name":"tom",
        "fatherId":2
    }
  ]
}

然后我删除一条grandFather

Paste_Image.png

最后的json为

{
    "grandFathers": [
        {
            "id": 2,
            "name": "tom-grandFather"
        }
    ],
    "fathers": [
        {
            "id": 2,
            "name": "tom-father",
            "grandFatherId": 2
        }
    ],
    "sons": [
        {
            "id": 1,
            "name": "jack",
            "fatherId": 1
        },
        {
            "id": 2,
            "name": "tom",
            "fatherId": 2
        }
    ]
}

由此可见
json-server不支持多级级联删除

搜索 标签
http://localhost:3000/posts?label=aaa

上一篇 下一篇

猜你喜欢

热点阅读