не должны содержать детей и список, так как они являются взаимоисключающими - PullRequest
0 голосов
/ 08 января 2019

Мне нужен виджет, который может настраивать массив сложных объектов, т. Е. Адреса электронной почты с метками.

, если я установлю inputFields для этой записи:

 {
    key: 'email_addresses', required: false, list: true, children: [{
      key: 'type', required: true, type: 'string'
    }, {
      key: 'email', required: true, type: 'string'
    }]
  }

Я сталкиваюсь со следующей ошибкой с zapier validate:

Message  │ must not contain children and list, as they're mutually exclusive.    

Мне бы очень хотелось иметь такую ​​конфигурацию. Есть ли обходной путь?

1 Ответ

0 голосов
/ 09 января 2019

отличный вопрос! Калеб здесь от Zapier Engineering.

Я думаю, что вопрос сводится к тому, чего вы хотите достичь. Списки отлично подходят для статических полей, для которых пользователи хотели бы указать несколько значений. Возьмите, к примеру, бирки Trello; пользователь может захотеть, чтобы Zap создал Trello с тегом Zapier и тегом со значением из предыдущего шага.

Позиции (на основе дочернего поля) отлично подходят для случаев, когда пользователи отображают позиции с предыдущих шагов. Это позволяет Zaps создавать динамическое количество объектов - может быть создано 0 или более из них. Когда у пользователя есть Zap, который возвращает данные с шага A в виде:

{
    "id": 42,
    "name": "Caleb McQuillin",
    "phone_numbers": [{
        "name": "work",
        "number": "314-159-2653"
    }],
    "email_addresses": [{
        "name": "work",
        "address": "caleb.mcquillin@example.com"
    }, {
        "name": "personal",
        "address": "caleb.mcquillin@example.net"
    }]
}

Если вы настроили свое действие со следующим inputFields:

[{
    key: 'email_addresses',
    required: false,
    children: [{
        key: 'type',
        required: true,
        type: 'string'
    }, {
        key: 'email',
        required: true,
        type: 'string'
    }]
}]

Затем пользователь может сопоставить email_addresses.name с шага A до email_addresses.type для шага B и email_addresses.address с шага A до email_addresses.address для шага B. Поскольку Zap включен, новые записи могут иметь 0 адресов электронной почты , 1 адрес электронной почты, 100 адресов электронной почты и т. Д. Ваш inputData будет содержать следующее на основе моего предыдущего примера:

{
    "email_addresses": [{
        "type": "work",
        "email": "caleb.mcquillin@example.com"
    }, {
        "type": "personal",
        "email": "caleb.mcquillin@example.net"
    }]
}

Если вы настроили свое действие следующим inputFields:

[{
    key: 'email_address_types',
    list: true,
    required: true
}, {
    key: 'email_address_addresses',
    list: true,
    required: true
}]

Пользователи смогут указать статическое количество адресов электронной почты для сопоставления с шага А на шаг Б. Если шаг А вернул данные в формате

{
    "id": 42,
    "name": "Caleb McQuillin",
    "home_phone": null,
    "work_phone": "314-159-2653",
    "home_email": "caleb.mcquillin@example.net,
    "work_email": "caleb.mcquillin@example.com",
}

и пользователь отобразил домашнюю и рабочую электронную почту, ваш inputData будет содержать следующее:

{
    "email_address_types": ["work", "personal"],
    "email_address_addresses": ["caleb.mcquillin@example.com", "caleb.mcquillin@example.net"]
}

и вы, скорее всего, использовали бы сценарии для объединения их в массив объектов.


Надеюсь, все это имеет смысл! Дайте мне знать, если у вас есть какие-либо вопросы, основанные на вышеуказанном. :)

...