1

我在 foxx 应用程序中使用 joi 数组项验证以及使用 arangodb-2.5.5 的 arango-shell 时遇到问题。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 版本,该版本已删除此功能?

4

2 回答 2

4

ArangoDB 2.5 使用旧版本的 joi。有问题的方法在itemsjoi 6.0 中被重命名为,之前被称为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
于 2015-06-17T13:20:24.617 回答
0

您不必等待 ArangoDB 2.6 使用最新版本的 joi。如果您npm install joi --save在 Foxx 应用程序的 APP 文件夹中,将使用它而不是与 ArangoDB 捆绑的那个。我已经这样做了一段时间了。

于 2015-06-19T15:53:51.877 回答