Firebase-болт дает ошибку ***TYPE RECURSION***"

У меня есть следующие определения типов в моем.bolt файле с именем tasks.bolt

//...

type Channel {
   name: ShortNonEmptyString,
   tasks: Map<TaskId, Task>,
   members: Map<UserId, User>
}

type User {
   displayName: ShortNonEmptyString,
   tasks: Map<UserId, Task>,
   channels: Map<ChannelId, Channel>
}

type ChannelId extends String {
    validate() { this.length <= 20 }
}

type TaskId extends String {
    validate() { this.length <= 20 }
}

type UserId extends String {
    //XXX: min. max. length of the user's ID?
    validate() { this.length >= 10 }
}

type Percent {
    validate() { this >= 0 && this <= 1 }
}

type State {
   //TODO: check in client
    validate() { this >= 0 && this <= 3 }
}

type ShortNonEmptyString extends String {
    validate() { this.length > 0 && this.length < 16}
}

//...

После компиляции (firebase-bolt

"channels": {
    "$key4": {
        ".validate": "$key4.length <= 20 && ***TYPE RECURSION***"
    },
    ".validate": "newData.hasChildren()"
}

Я понимаю, что это рекурсия, потому что у типа Channel есть Пользователи, а у Пользователей есть Каналы. Это нормальное поведение компилятора болтов? Является ли мое определение типа правильным? Мой подход хорош?

Спасибо за помощь!

0 ответов

Другие вопросы по тегам