从服务调用中删除context.query.params,但将其保留为URL参数

时间:2018-04-24 08:57:56

标签: feathersjs feathers-hook

我使用feathersjs和mongoose创建了一个“产品”服务。 这是我的服务:

context.params.lang = context.params.query.lang;

我的猫鼬模型包括“名字”,“类别”等字段。但这对我的问题并不重要。

当我这样打电话给我的服务时:

http://localhost:3030/products?lang=fr

由于“lang”不是我的数据库产品的条目,我没有结果。

有没有办法从查询中删除“lang”参数,但要保留它以便在我的钩子中使用它。

我已经尝试过discardQuery,但它会删除参数,我不能再在我的钩子中使用它了。

感谢您的帮助

解决方案

感谢daff我找到了一个解决方案,在一个前钩子中,我已经附加了我的params.query.lang:

commonHooks.discardQuery('lang')

在我丢弃我的context.params.query.lang之后,将其从查询中删除

let lang = context.params.lang;

然后我能够在我的钩子之后得到像这样的lang参数:

{
    text: 'Permissions',
    dataIndex: 'permissions',
    width: 200,
    renderer: function(value, cell) {
        var s = '';
        for (var index in value) {
            s = s + '<input type="checkbox" ';
            if (value[index] == 1) {
                s = s + 'checked';
            };
            s = s + '>' + index;
        }
        return s;
    }
}

1 个答案:

答案 0 :(得分:0)

为什么不在删除之前将其添加到其他地方,例如context对象或context.params

const { omit } = require('lodash');

app.service('products').hooks({
  before: {
    find(context) {
      context.params.language = context.params.query.language;

      context.params.query = omit(context.params.query, 'language');

      return context;
    }
  }
})