使用 Mysql 获取记录的 LoopBack 4 REST API 示例
LoopBack 4 REST API example for getting record with Mysql
我正在学习loopback 4,我已经创建了模型、存储库和数据源,它也已连接
到 mysql,我可以从 http://127.0.0.1:3000/myapi/{id}
检索结果
在我的默认示例中,通过 id 获取的是:
@get('/citySchedule/{id}', {
responses: {
'200': {
description: 'Schedule model instance',
content: {'application/json': {schema: {'x-ts-type': Schedule}}},
},
},
})
async findById(@param.path.number('id') id: number): Promise<Schedule> {
return await this.ScheduleRepository.findById(id);
}
但是,我没有找到任何有关获取具有更多参数的数据的教程。
假设 schedule
的 mysql table 包含列 id
、city_name
、city_code
、date
, task
, item
.
比如我想得到"SELECT task, item FROM schedule WHERE city_code=123 AND date=2019-05-01"
我的问题是,如何编写代码以在 loopback controller 处获取这些数据?
任何示例代码...
我的期望,我可以查询我的 api :
http://127.0.0.1:3000/myapi/{city_code}/{date}/
获取数据结果或
http://127.0.0.1:3000/myapi/{city_name}/{date}/
如果您使用环回 cli 生成了控制器,那么您必须在控制器中有另一个方法 class 像这样
@get('/citySchedule', {
responses: {
'200': {
description: 'Array of Schedule model instances',
content: {
'application/json': {
schema: {type: 'array', items: {'x-ts-type': Schedule}},
},
},
},
},
})
async find(
@param.query.object('filter', getFilterSchemaFor(Schedule)) filter?: Filter,
): Promise<Schedule[]> {
return await this.ScheduleRepository.find(filter);
}
您可以使用此 API 获取更多过滤数据。
考虑你的例子
SELECT task, item FROM schedule WHERE city_code=123 AND
date=2019-05-01
对于此查询,您需要像这样点击 API。
GET /citySchedule?filter=%7B%22where%22%3A%7B%22city_code%22%3A123%2C%22date%22%3A%222019-05-01%22%7D%2C%22fields%22%3A%7B%22task%22%3Atrue%2C%22item%22%3Atrue%7D%7D
这里的filter查询参数值实际上是下面json字符串
的url编码字符串
{
"where":{
"city_code":123,
"date":"2019-05-01"
},
"fields":{
"task":true,
"item":true
}
}
我正在学习loopback 4,我已经创建了模型、存储库和数据源,它也已连接
到 mysql,我可以从 http://127.0.0.1:3000/myapi/{id}
在我的默认示例中,通过 id 获取的是:
@get('/citySchedule/{id}', {
responses: {
'200': {
description: 'Schedule model instance',
content: {'application/json': {schema: {'x-ts-type': Schedule}}},
},
},
})
async findById(@param.path.number('id') id: number): Promise<Schedule> {
return await this.ScheduleRepository.findById(id);
}
但是,我没有找到任何有关获取具有更多参数的数据的教程。
假设 schedule
的 mysql table 包含列 id
、city_name
、city_code
、date
, task
, item
.
比如我想得到"SELECT task, item FROM schedule WHERE city_code=123 AND date=2019-05-01"
我的问题是,如何编写代码以在 loopback controller 处获取这些数据? 任何示例代码...
我的期望,我可以查询我的 api :
http://127.0.0.1:3000/myapi/{city_code}/{date}/
获取数据结果或
http://127.0.0.1:3000/myapi/{city_name}/{date}/
如果您使用环回 cli 生成了控制器,那么您必须在控制器中有另一个方法 class 像这样
@get('/citySchedule', {
responses: {
'200': {
description: 'Array of Schedule model instances',
content: {
'application/json': {
schema: {type: 'array', items: {'x-ts-type': Schedule}},
},
},
},
},
})
async find(
@param.query.object('filter', getFilterSchemaFor(Schedule)) filter?: Filter,
): Promise<Schedule[]> {
return await this.ScheduleRepository.find(filter);
}
您可以使用此 API 获取更多过滤数据。
考虑你的例子
SELECT task, item FROM schedule WHERE city_code=123 AND date=2019-05-01
对于此查询,您需要像这样点击 API。
GET /citySchedule?filter=%7B%22where%22%3A%7B%22city_code%22%3A123%2C%22date%22%3A%222019-05-01%22%7D%2C%22fields%22%3A%7B%22task%22%3Atrue%2C%22item%22%3Atrue%7D%7D
这里的filter查询参数值实际上是下面json字符串
的url编码字符串{
"where":{
"city_code":123,
"date":"2019-05-01"
},
"fields":{
"task":true,
"item":true
}
}