Javascript 作为配置的一部分构建类似概念的过滤器选项

Javascript 作为配置的一部分构建类似概念的过滤器选项,javascript,typescript,Javascript,Typescript,目标是构建一个可以配置某些约束的系统。类似于概念对其过滤器属性的作用 系统A配置约束,系统C评估约束。两者都使用Typescript。但是,约束存储在锈蚀环境(系统B)中。该系统应尽可能少地修改。因此,数据流是: 系统A(TS)->系统B(锈蚀)->系统C(TS) 系统A和C知道数据结构,但只有系统C知道正在评估的实际值。因此,系统A必须以抽象的方式定义这些约束 我现在的最佳解决方案: 将这些约束存储为字符串形式的JS表达式。例如,系统A生成以下约束: const expression=“'$

目标是构建一个可以配置某些约束的系统。类似于概念对其过滤器属性的作用

系统A配置约束,系统C评估约束。两者都使用Typescript。但是,约束存储在锈蚀环境(系统B)中。该系统应尽可能少地修改。因此,数据流是:

系统A(TS)->系统B(锈蚀)->系统C(TS)

系统A和C知道数据结构,但只有系统C知道正在评估的实际值。因此,系统A必须以抽象的方式定义这些约束

我现在的最佳解决方案

  • 将这些约束存储为字符串形式的JS表达式。例如,系统A生成以下约束:
  • const expression=“'${NAME}'=='苏黎世'
    
  • 系统B可以轻松地存储此约束,而无需进行任何必要的转换,因为它只是一个字符串

  • 系统C接受从用户收到的输入,并用占位符
    ${NAME}
    替换它,并且可以调用JS函数
    eval()
    ,该函数可以将字符串作为JS代码进行计算

  • 问题

    • 这个问题的名称是什么,这样我就可以更好地用谷歌搜索它了?:)这是一种查询语言吗
    • 您认为存储字符串并对其调用
      eval()
      的方法有问题吗
    • 或者有什么更好的办法来实现这一点
    • 有没有已知的库可以帮助我编写更复杂的约束
    背景: 实际用例可能有助于更好地理解问题: 正在建立的系统是一个分散的投票系统

    • 系统A是投票机构,配置民谣和允许投票的人
    • 此配置存储在公共分类账(系统B)中
    • 系统C负责生成合格投票的访问令牌。选民必须拿出一些证据。例如,由一个合格国家签署的护照(限制条件)。这些约束直接从区块链的投票配置中读取