无法通过连接到 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.ts
和 todo.model.ts
中相同)
我正在做 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.ts
和 todo.model.ts
中相同)