无法通过连接到 PostgreSQL 进行工作环回 4 todo-list 教程

Cannot make work loopback 4 todo-list tutorial with connection to PostgreSQL

我正在做 tutorials in the loopback documentation 因为我在 todo-list 教程的最后阶段遇到问题,当时我想将应用程序连接到数据库(PostgreSQL,如教程中所示)。

我已经通过 lb4 example todo-list 初始化了应用程序,然后我按照 https://loopback.io/doc/en/lb4/todo-list-tutorial-sqldb.html 给出的说明进行操作。

我没有忘记npm run migrate -- --rebuild,数据库中的表创建得很好。表是空的。

当我POST /todo-lists(使用http://localhost:3000/explorer/#/TodoListController/TodoListController.create)和这个body

{ "title": "grocery list" }

我得到答案

{
  "error": {
    "statusCode": 500,
    "message": "Internal Server Error"
  }
}

我在控制台中有这个日志

npm start
...
Server is running at http://[::1]:3000
Request POST /todo-lists failed with status code 500. error: null value in column "id" of relation "todolist" violates not-null constraint
    at Parser.parseErrorMessage (C:\Users\azias\Documents\dev\js\loopback4-example-todo-list\node_modules\pg-protocol\dist\parser.js:278:15)
    at Parser.handlePacket (C:\Users\azias\Documents\dev\js\loopback4-example-todo-list\node_modules\pg-protocol\dist\parser.js:126:29)
    at Parser.parse (C:\Users\azias\Documents\dev\js\loopback4-example-todo-list\node_modules\pg-protocol\dist\parser.js:39:38)
    at Socket.stream.on (C:\Users\azias\Documents\dev\js\loopback4-example-todo-list\node_modules\pg-protocol\dist\index.js:10:42)
    at Socket.emit (events.js:198:13)
    at addChunk (_stream_readable.js:288:12)
    at readableAddChunk (_stream_readable.js:269:11)
    at Socket.Readable.push (_stream_readable.js:224:10)
    at TCP.onStreamRead [as onread] (internal/stream_base_commons.js:94:17)

据我所知,提到的 id 不是自动生成的(我想它应该是),因此丢失了。

我正在发现环回,所以我不知道我必须更改什么才能使其正常工作。

我想我终于找到了。

在所有型号中,id 定义为 属性,设置为 generated: false,必须更改为 generated: true。这使得在数据库中生成序列并自动生成id。

例如,在todo-list.model.ts中,代码

  @property({
    type: 'number',
    id: true,
    generated: false,
  })
  id?: number;

必须改为

  @property({
    type: 'number',
    id: true,
    generated: true,
  })
  id?: number;

todo-list-image.model.tstodo.model.ts 中相同)