如何使用Astronomy-MeteorJS使用父属性验证表单

How to validate a form using parent attributes with Astronomy - MeteorJS

本文关键字:属性 验证 表单 何使用 Astronomy-MeteorJS      更新时间:2023-09-26

我是Meteor和Astronomy的新手,我试图根据父对象的属性(嵌套关系)验证对象。我阅读了Nested Validation文档,但没有发现如何仅在某个情况下验证子对象(此处为Member.level>1)。

代码将有助于理解:

Address = Astro.Class({
  name: 'Address',
  fields: {
    city: {
      type: 'string',
      // Test #1: on child object
      validator: Validators.if({
         condition: function () {
           return {parent level} >= 2;
         },
         true: Validators.maxLength(50)
      })
    }
  }
});
Member = Astro.Class({
  name: 'Member',
  field: {
    level: {
      type: 'number',
      default: 1
    },
    address: {
      type: 'object',
      default: function () {
        return {};
      },
      nested: 'Address',
      // Test #2: On parent object
      validator: Validators.if({
        condition: function() {
          // Is required ?
          return (this.level !== 1)
        },
        true: Validators.required()
      })
    }
  /***/
});

目标是:如果Member.level > 1,则只需要Adress(因此验证)。

我不知道用什么条件函数来代替{parent level}。我尝试使用this(仅Address对象)、this.parent(null)和parent(Window对象)。

所有者在github上回答了这个问题:"这个问题与天文学1.0有关,我不会为这个版本创建任何新功能"

使用Astronomy 2.0来避免