【发布时间】:2019-12-11 04:36:28
【问题描述】:
我正在使用 express 创建一个 graphql 服务器,并且我有一个解析器,可以根据用户查询的输入转换我的字段。 我正在使用的转换器正在返回一个函数,这是我的问题的原因。
我想按某个用户确定的字段对结果进行排序,但由于该字段是一个函数,所以它不起作用。
所以解析器看起来像这样:
const resolver = (req, param) => {
return {
history: async input => {
let size = input.pageSize || 3;
let start = (input.page || 0) * size;
let end = start + size;
let sortField = (input.sort || {}).field || 'timestamp';
return fs.promises.readFile("./history/blitz.json", "utf8").then(data =>
JSON.parse(data)
.slice(start, end)
.map(job => historyTransformer(job))
.sort((a,b) => a[sortField] > b[sortField] ? 1 : a[sortField] < b[sortField] ? -1 : 0)
);
}
};
};
和变压器:
const historyTransformer = job => {
return {
...job,
timestamp: input =>
dateFormat(job.timestamp, input.format || "mm:hh dd-mm-yyyy")
};
};
我不确定我是否遗漏了什么,但在开始排序之前是否有一种简单的方法来解决函数调用?
【问题讨论】:
标签: javascript node.js express graphql