1

我正在使用FilePond将文件上传到 hapi.js 17.9 API。FilePond 允许在用户选择文件后自动上传,并具有用于删除/恢复/撤消上传文件的 UI。根据 FilePond 的文档...

FilePond 通过点击撤消按钮以 12345 作为正文发送 DELETE 请求

其中12345是上传文件时服务器提供的 ID。请注意,这不是 JSON,它是纯文本正文。

我有一个 hapi.js 路由,它设置为处理 DELETE 方法,具有默认验证设置。当 FilePond 发送它的请求时,Hapi 在我的处理程序代码执行之前以 400 错误响应,并在控制台中打印此消息:

Validation-failAction:error ValidationError: "value" must be an object
    at Object.exports.process (/home/lamont/projects/rooster/api/node_modules/hapi/node_modules/joi/lib/errors.js:203:19)
    at internals.Object._validateWithOptions (/home/lamont/projects/rooster/api/node_modules/hapi/node_modules/joi/lib/types/any/index.js:764:31)
    at module.exports.internals.Any.root.validate (/home/lamont/projects/rooster/api/node_modules/hapi/node_modules/joi/lib/index.js:147:23)
    at Object.internals.input (/home/lamont/projects/rooster/api/node_modules/hapi/lib/validation.js:83:63)
    at exports.payload (/home/lamont/projects/rooster/api/node_modules/hapi/lib/validation.js:50:22)
    at Request._lifecycle (/home/lamont/projects/rooster/api/node_modules/hapi/lib/request.js:263:62)
    at process._tickCallback (internal/process/next_tick.js:68:7)

hapi 文档强烈暗示默认有效负载验证选项不执行任何有效负载验证,所以我有点惊讶这种情况甚至是一个问题。

我尝试了以下方法:

options.payload= {parse: false}

options.payload= {allow: "text\*"}

options.validate= { payload: async (v, o) => { return v } }

options.validate= { payload: true }

options.validate= { payload: false }

options.validate= undefined

options.validate= null

编辑:根据我团队中的一个人的建议,我也尝试过

options.validate : { payload: (() => { return Joi.string(); })() }

并在根本没有 validate 属性的情况下定义我的路由选项(这在功能上应该等同于显式的 undefined 但谁知道)。

在所有这些情况下,我仍然收到上述验证错误。是否不可能编写一个接受纯非 json 文本的 hapi 路由?

4

0 回答 0