Loopback 4 MySQL 如果 generated 为真,则不允许手动为 id 列创建数据

Loopback 4 MySQL not allowing to manually create data for id column if generated is true

我第一次使用 Loopback 4 并使用 MySQL 作为数据库连接器。我能够将模型与我的所有代码一起使用,但在 generated: true.

的 id 列中遇到问题

首先在我的模型中使用 required: true 不允许使用 API Calls.It 添加数据给我问题 id can't be blank。如果我做了 required: false,我可以忽略这个错误 这实际上不是一个大问题,因为我希望 MySQL 使用 AUTO INCREMENT 产生价值。

但现在我需要使用单个 API 生成一些夹具数据。在那种情况下,我需要手动将数据插入 id 列,例如

await this.projectRepository.create({
    id: 1,
    title: "My Project"
    createdAt: (new Date).toISOString()
});


await this.projectItemsRepository.create({
    id: 1,
    projectId: 1,
    title: "My Item 1"
    createdAt: (new Date).toISOString()
});


await this.projectItemsRepository.create({
    id: 2,
    projectId: 1,
    title: "My Item 2"
    createdAt: (new Date).toISOString()
});   

因此项目 ID 是项目项模型中的外键。现在,如果我执行此脚本,我会收到 id id can't be set 的问题。看起来像 loopback 4 阻止尝试在生成 id 列的情况下设置值。

First using required: true in my models is not allowing to add data using API Calls.

这是预期的,因为此参数取自 OpenAPI 3.0 规范,它从 API 消费者的角度工作(即 API 消费者必须提供参数,不一定是 ORM)。

So Project Id is foreign key in projectitems model. Now if I execute this script, I am getting issue for id id can't be set.

设置模型配置settings.forceId: false:

@model({
  settings: {
    forceId: false,
  }
})
class MyModel extends Entity {/* ... */}

参考文献: