【问题标题】:It is possible to create a doubly linked list with Joi?可以用 Joi 创建一个双向链表吗?
【发布时间】:2020-04-12 00:57:54
【问题描述】:

我有一个名为 directorySchema 的 Joi 模式,除其他键外,该模式还有一个名为 parentDirectory 的键,该类型也是一个 directorySchema,如果目录是根/头,则可能为 null,另一个键称为目录, 哪个类型也是 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 的经验,但听起来您想创建一个模式,其中您的属性引用相同模式的其他对象。看看这个 SO answer 以获取有关如何执行此操作的建议。

标签: javascript node.js joi


【解决方案1】:

你可以使用 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

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

【讨论】:

  • 非常感谢约翰!!
猜你喜欢
  • 2011-07-22
  • 2016-07-18
  • 1970-01-01
  • 2019-09-02
  • 2021-03-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-07-13
相关资源
最近更新 更多