feathersjs:忽略数据库查询中的URL查询参数

时间:2019-08-08 15:24:17

标签: javascript feathersjs

有没有办法忽略数据库查询中的URL查询参数?

背景:

我有一个GET / Find-REST-Endpoint /parts,想要指定类似/parts?format=type1之类的内容以特定格式接收数据。

我将在after hook中的parts service中进行格式化。但是抛出错误,说列"parts.format" is not specified

那么如何忽略数据库的某些url查询参数,而在after hook logic中使用它们?

2 个答案:

答案 0 :(得分:1)

Feathers hook中解构和传播JavaScript对象在这里可能非常有用:

async context => {
  const { query: { format, ...query } } = context.params;

  context.params = {
    ...context.params,
    query,
    format
  }

  return context;
}

这将从format中删除query并设置params.format。另一个优点是不会修改原始对象。

答案 1 :(得分:0)

使用javascript的delete函数怎么样?

此钩子提取查询参数并将其应用于context.params

function extractQueryParams(...fields){
  return context => {
    fields.forEach(field => {
      context.params[field] = context.params.query[field]
      delete context.params.query[field]
    })

    return context
  }
}

// can be used like this 
before: {
    all: [extractQueryParams('delivery')],
}