Я столкнулся со следующей ситуацией:Разрешено ли вычислять свойства объекта для его представления?
У меня есть Post
объект, который связан через многие-ко-многим к Comment
объекта. a Post
может содержать не более 2 Comment
s, помеченных как «Верх».
Мне нужно открыть API, предоставляющий функцию публикации сообщений (а также подробный просмотр сообщения, но этот вариант в порядке). Проблема заключается в том, что Post
может иметь огромное количество Comment
с, и я не вижу себя отображение этого представления:
[{
title: "Lorem ipsum",
....
comments: [{
"author": "...",
"comment": ".....",
"top": false
}, ... // repeat a few thousand times
]
},...
]
Однако, я знаю, что большинство потребителей этого API позже хочу дисплей непосредственно верхний комментарий (s), так что я имею в виду выставляя это представление:
[{
title: "Lorem ipsum",
....
topComments: [{
"author": "...",
"comment": ".....",
}, .... // repeat once more if needed
]
},...
]
Здесь я выбираю не отображать все комментарии, которые могут быть доступны через/сообщений/ID_OF_POST/комментарии, однако я вычисляю at "runtime" a topComments
свойство (которого нет в исходном объекте в коде) и отобразить комментарий s помечены как верхние
Разрешено ли вычислять с использованием бизнес-логики и выставлять свойство, которое не существует в представленном объекте? Что, если позже, я бы хотел добавить новое вычисляемое свойство numberOfComments
, все равно будет все в порядке?
Заранее спасибо за ответы
Да, это разрешено, оно называется «переходные» или «виртуальные» свойства. –
@ См. Http: // stackoverflow.com/questions/22926254/add-custom-property-to-serialized-object –
@MathieuDormeval вы можете разместить это в качестве ответа? Я был бы очень рад принять его, поскольку он отлично ответил на то, что я хочу! :) – Lucio