可以用 Joi 创建双向链表吗?

It is possible to create a doubly linked list with Joi?

我有一个名为 directorySchema 的 Joi 架构,除其他键外,此架构有一个名为 parentDirectory 的键,该类型也是一个 directorySchema,如果目录是 root/head 目录,则可以为空,并且另一个名为 directories 的键,其类型也是 directorySchemas 的数组。基本上这个模式代表一个双向链表。

仿照范例:

const Joi = require('@hapi/joi')

const directorySchema = Joi.object({
  name: Joi.string().required(),
  path: Joi.string().required(),
  size: Joi.number().min(0).required(),
  directories: Joi.array().items(...) // how to reference "directorySchema" here
  parentDirectory: ... // and here?
})

module.exports = directorySchema

这张图解释了双向链表的概念,方框对象代表目录。

我想知道,是否可以创建一个双链表来验证我在 Joi 中的对象?

您可以使用 joi 链接:

const Joi = require('@hapi/joi')

const directorySchema = Joi.object({
  name: Joi.string().required(),
  path: Joi.string().required(),
  size: Joi.number().min(0).required(),
  directories: Joi.array().items(Joi.link("#directory"))
}).id("directory")

module.exports = directorySchema

Link 到文档:https://hapi.dev/module/joi/api/?v=17.1.1#linkref