验证 feathresjs 中缺少参数
validating lack of parameters in feathresjs
我已经阅读了 feathersjs 文档,但是在服务中执行 find 方法后我意识到如果我不提供任何查询参数,服务 returns 所有数据,这是我不想。我如何定义一个钩子来验证至少有一个查询参数才能继续;否则,发回 403 错误(错误请求)。?
我对这样做的方式有疑问我试过这个:
app.service('myService')
.before(function(hook) {
if (hook.params.query.name === undefined){
console.log('There is no name, throw an error!');
}
})
.find({
query: {
$sort: {
year: -1
}
}
})
我在挂钩文件中尝试了这个(看起来真的很绝望&|愚蠢):
function noparams (hook) {
if (hook.params.query.name === undefined){
console.log('There is no name, throw an error!');
}
}
module.exports = {
before: {
find: [ noparams(this) ] ...
}
}
但它无法编译(我不知道在那里作为参数发送什么),示例似乎是针对 2.0 之前的版本,最重要的是我发现的代码似乎在 app.js,但是所有的代码都使用 feathers-cli 进行了不同的编码,因此即使在书中,示例也不针对脚手架版本,这令人困惑,因为它们显示的代码应该在不同的文件中。
谢谢。
我结束了使用before hook,所以使用的代码是这样的:
const errors = require('feathers-errors');
module.exports = function () {
return function (hook) {
if(hook.method === 'find'){
if (hook.params.query.name === undefined || hook.params.query.length == 0){
throw new errors.BadRequest('Invalid Parameters');
}else{
return hook;
}
}
}
};
如果您已经使用 feathers-cli 生成您的应用程序 (feathers v2.x),则无需执行任何其他操作。如果是早期版本,您可能需要添加 Express 错误处理程序,并且在文档|错误|REST 中指出。
谢谢。
我已经阅读了 feathersjs 文档,但是在服务中执行 find 方法后我意识到如果我不提供任何查询参数,服务 returns 所有数据,这是我不想。我如何定义一个钩子来验证至少有一个查询参数才能继续;否则,发回 403 错误(错误请求)。?
我对这样做的方式有疑问我试过这个:
app.service('myService')
.before(function(hook) {
if (hook.params.query.name === undefined){
console.log('There is no name, throw an error!');
}
})
.find({
query: {
$sort: {
year: -1
}
}
})
我在挂钩文件中尝试了这个(看起来真的很绝望&|愚蠢):
function noparams (hook) {
if (hook.params.query.name === undefined){
console.log('There is no name, throw an error!');
}
}
module.exports = {
before: {
find: [ noparams(this) ] ...
}
}
但它无法编译(我不知道在那里作为参数发送什么),示例似乎是针对 2.0 之前的版本,最重要的是我发现的代码似乎在 app.js,但是所有的代码都使用 feathers-cli 进行了不同的编码,因此即使在书中,示例也不针对脚手架版本,这令人困惑,因为它们显示的代码应该在不同的文件中。
谢谢。
我结束了使用before hook,所以使用的代码是这样的:
const errors = require('feathers-errors');
module.exports = function () {
return function (hook) {
if(hook.method === 'find'){
if (hook.params.query.name === undefined || hook.params.query.length == 0){
throw new errors.BadRequest('Invalid Parameters');
}else{
return hook;
}
}
}
};
如果您已经使用 feathers-cli 生成您的应用程序 (feathers v2.x),则无需执行任何其他操作。如果是早期版本,您可能需要添加 Express 错误处理程序,并且在文档|错误|REST 中指出。
谢谢。