在 Foxx 应用程序中使用 joi 验证数组项
Validating array items with joi in a Foxx app
我在 foxx 应用程序以及 arangodb-2.5.5 的 arango-shell 中使用 joi 数组项验证时遇到问题。
joi-documentation 建议使用类似的东西:
var Joi = require('joi');
Joi.array().items({'name': Joi.string().required()});
用于验证类似于以下内容的数据集:
[{'name': 'Peter'}, {'name': 'Edeltraut'}, ...]
但是,在 Foxx 应用程序中使用它会导致应用程序停止工作。将上面的代码片段粘贴到 arango-shell 中会产生以下输出:
JavaScript exception: TypeError: undefined is not a function
!Joi.array().items({'name': Joi.string().required()});
! ^
stacktrace: TypeError: undefined is not a function
at <shell command>:1:13
我是否遗漏了什么,或者 arangodb 使用的是修改/较小版本的 joi,删除了此功能?
ArangoDB 2.5 使用旧版本的 joi。有问题的方法在 joi 6.0 中被重命名为 items
并且之前被称为 includes
.
您可以在 https://github.com/hapijs/joi/tree/v4.9.0
找到 joi 4.9.0(ArangoDB 2.5 附带的版本)的文档
ArangoDB 2.6 将附带 joi 6.4.3,这是目前的最新版本。
如果您想知道 ArangoDB 附带的 NPM 依赖项的版本,您也可以通过导入其 package.json
文件来查找版本号,如下所示:
require('joi/package.json').version
无需等待ArangoDB 2.6 即可使用最新版本的joi。如果您 npm install joi --save
在 Foxx 应用程序的 APP 文件夹中,它将被使用而不是与 ArangoDB 捆绑在一起的那个。我已经这样做了一段时间了。
我在 foxx 应用程序以及 arangodb-2.5.5 的 arango-shell 中使用 joi 数组项验证时遇到问题。 joi-documentation 建议使用类似的东西:
var Joi = require('joi');
Joi.array().items({'name': Joi.string().required()});
用于验证类似于以下内容的数据集:
[{'name': 'Peter'}, {'name': 'Edeltraut'}, ...]
但是,在 Foxx 应用程序中使用它会导致应用程序停止工作。将上面的代码片段粘贴到 arango-shell 中会产生以下输出:
JavaScript exception: TypeError: undefined is not a function
!Joi.array().items({'name': Joi.string().required()});
! ^
stacktrace: TypeError: undefined is not a function
at <shell command>:1:13
我是否遗漏了什么,或者 arangodb 使用的是修改/较小版本的 joi,删除了此功能?
ArangoDB 2.5 使用旧版本的 joi。有问题的方法在 joi 6.0 中被重命名为 items
并且之前被称为 includes
.
您可以在 https://github.com/hapijs/joi/tree/v4.9.0
找到 joi 4.9.0(ArangoDB 2.5 附带的版本)的文档ArangoDB 2.6 将附带 joi 6.4.3,这是目前的最新版本。
如果您想知道 ArangoDB 附带的 NPM 依赖项的版本,您也可以通过导入其 package.json
文件来查找版本号,如下所示:
require('joi/package.json').version
无需等待ArangoDB 2.6 即可使用最新版本的joi。如果您 npm install joi --save
在 Foxx 应用程序的 APP 文件夹中,它将被使用而不是与 ArangoDB 捆绑在一起的那个。我已经这样做了一段时间了。