【发布时间】:2021-04-08 07:13:07
【问题描述】:
我有一个餐厅预订项目,当您输入查询字符串时,例如:http://localhost:5000/reservations?2020-12-31,它将返回当天给定的预订。
我正在使用 Knex 执行我的查询,并且我有第一个函数,它将返回数据库中的所有预订:
const listReservations = () => knex('reservations').select('*');
然后我尝试把这些,并返回指定的保留:
const list = async (req, res) => {
const response = await service.listReservations();
const data = response.filter((reserve) => {
return Date.parse(reserve.reservation_date) - Date.now() > 0;
});
console.log(data);
res.json({ data });
};
数据如下:
[
{
"first_name": "Rick",
"last_name": "Sanchez",
"mobile_number": "202-555-0164",
"reservation_date": "2020-12-31",
"reservation_time": "20:00:00",
"people": 6,
"created_at": "2020-12-10T08:30:32.326Z",
"updated_at": "2020-12-10T08:30:32.326Z"
},
{
"first_name": "Frank",
"last_name": "Palicky",
"mobile_number": "202-555-0153",
"reservation_date": "2020-12-30",
"reservation_time": "20:00",
"people": 1,
"created_at": "2020-12-10T08:31:32.326Z",
"updated_at": "2020-12-10T08:31:32.326Z"
},
{
"first_name": "Bird",
"last_name": "Person",
"mobile_number": "808-555-0141",
"reservation_date": "2020-12-30",
"reservation_time": "18:00",
"people": 1,
"created_at": "2020-12-10T08:31:32.326Z",
"updated_at": "2020-12-10T08:31:32.326Z"
},
{
"first_name": "Tiger",
"last_name": "Lion",
"mobile_number": "808-555-0140",
"reservation_date": "2025-12-30",
"reservation_time": "18:00",
"people": 3,
"created_at": "2020-12-10T08:31:32.326Z",
"updated_at": "2020-12-10T08:31:32.326Z"
},
{
"first_name": "Anthony",
"last_name": "Charboneau",
"mobile_number": "620-646-8897",
"reservation_date": "2026-12-30",
"reservation_time": "18:00",
"people": 2,
"created_at": "2020-12-10T08:31:32.326Z",
"updated_at": "2020-12-10T08:31:32.326Z"
}
]
如果我解析我的日期,减去今天的日期并返回 0 以上的日期,我得到:Tiger 和 Anthony。如果我返回低于 0 的值,我会得到前三个名称。
测试用例在 2020 年 12 月 31 日作为查询字符串传递,并期待 Rick。如何执行给定查询字符串的 GET 请求?
【问题讨论】:
-
您还应该考虑使用
.where('reservation_date', '>', new Date())将where子句添加到您的sql 查询中,而不是对结果执行filter()。
标签: javascript express knex.js