无法通过连接到 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)使用这个主体时

{ "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',generated: true,})
  id?: number;

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

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...