我使用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;
}
}
答案 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;
}
}
})