После обновления Sencha Touch 2.4 до Ext js 6, возникают ошибки взаимосвязи, касающиеся "соединения" между hasMany и ownTo - PullRequest
0 голосов
/ 05 августа 2020

Я обновляю большой проект Sencha Touch 2.4 до Ext Js 6.5.3

Мой процесс до сих пор обновлял проект с помощью инструмента Sencha CMD (sencha upgrade ..). и следуя руководству в блоге Sencha: https://docs.sencha.com/extjs/6.0.2/guides/upgrades_migrations/modern_upgrade_guide.html

Пока все хорошо. Я обновил проект (используя Sencha CMD [sencha app refresh]), и проект запущен с помощью команды watch (sencha app watch).

Теперь я получаю это сообщение об ошибке на консоли (Chrome s), говоря:

hasMany ("KrokoPodo.model.Receipt") and belongsTo ("KrokoPodo.model.CashPayment") should not be used in conjunction to declare a relationship. Use only one.

Переход к двум моим моделям:

Квитанция:

hasOne:
    [
        { model: 'KrokoPodo.model.Entry', reference: 'entryId' }
    ],

    hasMany:
    [
         {
             model: 'KrokoPodo.model.CashPayment', reference: 'receiptId',
             store:
             {
                 pageSize: null
             }
         },
         {
             model: 'KrokoPodo.model.CreditPayment', reference: 'receiptId',
             store:
             {
                 pageSize: null
             }
         },
  ]

CashPayment:

    belongsTo: [
      { 
          model: 'KrokoPodo.model.Receipt', 
          reference: 'receiptId' 
      }
    ],

('reference' было 'foreignKey' и было изменено из-за предупреждения консоли, что foriegnKey устарел, и правильной альтернативой является ссылка [с Ext js 6.2], надеюсь, я прав).

From читая документацию, я вижу, что в Ext Js 6.5: HasMany:

Этот класс обеспечивает создание бесключевой ассоциации Ext.data.schema.ManyToOne. Это объявление должно быть на «одном» объекте. Дополнительную информацию см. В Ext.data.schema.ManyToOne и Ext.data.schema.Association.

источник: https://docs.sencha.com/extjs/6.5.3/modern/Ext.data.schema.HasMany.html

и ownTo:

Этот класс обеспечивает создание ассоциации Ext.data.schema.ManyToOne без ключа. Это объявление должно быть на объекте "многие". Дополнительную информацию см. В Ext.data.schema.ManyToOne и Ext.data.schema.Association.

источник: https://docs.sencha.com/extjs/6.5.3/modern/Ext.data.schema.BelongsTo.html

Я не совершенно уверен, что это означает, и как выбрать между BelongsTo и HasMany? почему они вместе и как я могу убедиться, что если я удалю или изменю один, это не нарушит бизнес-логику моего проекта c?

Я пытался поискать ответы в Интернете, но ничего не нашел это помогло мне.

Спасибо.

...