我使用feathersjs 和mongoose 创建了一个“产品”服务。这是我的服务:
// Initializes the `products` service on path `/products`
const createService = require('feathers-mongoose');
const createModel = require('../../models/products.model');
const hooks = require('./products.hooks');
module.exports = function (app) {
const Model = createModel(app);
const paginate = app.get('paginate');
const options = {
name: 'products',
Model,
paginate
};
// Initialize our service with any options it requires
app.use('/products', createService(options));
// Get our initialized service so that we can register hooks and filters
const service = app.service('products');
service.hooks(hooks);
};
我的猫鼬模型包括一些字段,如“名称”、“类别”等。但这对我的问题并不重要。
当我这样调用我的服务时:
http://localhost:3030/products?lang=fr
由于“lang”不是我的数据库产品的条目,我没有得到任何结果。
有没有办法从查询中删除“lang”参数,但要保留它以便在我的钩子中使用它。
我试过discardQuery,但它会删除参数,我不能再在我的钩子中使用它了。
谢谢你的帮助
解决方案
感谢 daff,我找到了一个解决方案,在之前的钩子中,我像这样附加了我的 params.query.lang:
context.params.lang = context.params.query.lang;
在我丢弃我的 context.params.query.lang 以将其从查询中删除之后
commonHooks.discardQuery('lang')
然后我能够在我的后挂钩中获得这样的 lang 参数:
let lang = context.params.lang;