在 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 捆绑在一起的那个。我已经这样做了一段时间了。