Я пытаюсь достичь следующего, но прежде чем сделать это, я хочу убедиться, что оно работает.
У меня есть несколько коллекций, которые можно связать между собой. Художник может владеть альбомом, альбом может принадлежать артисту, лейбл может иметь исполнителя в своем списке, и артист может продвигаться лейблом. Так что есть двунаправленные ссылки.
Я подумал о следующей структуре. Художник, альбом и т.д. c. уже есть, теперь хочу сделать привязку.
Я НЕ хочу явно устанавливать в каждой сущности свойство для ссылки. Например, у исполнителя должно быть одно свойство, указывающее на альбом, еще одно, указывающее на лейбл, и так далее.
Я подумал о дополнительной коллекции, которая называется «Связь». Он всегда сохраняет значения from, to, fromType, toType. Благодаря этому я могу искать исходящие сообщения от объекта FROM к объекту TO и знать по типу, что запрашивать.
Это означает. Я хочу попросить исполнителя и показать связанные альбомы, лейблы, дизайнеров или что-то еще. Я НЕ хочу получать дополнительные запросы, так как я могу загрузить 20 из них и отобразить их в списке, и это удвоит запрос.
Что мне нужно сделать, так это: запросить разбитые на страницы списки художников , "заселить" любые ссылки, вернуть. Теперь у меня вопрос: как это сделать? Мне нужно сначала .find () исполнителей, затем перебрать их всех и .find () все ссылки, где artist._id совпадает с «from» в коллекции Linkage. Это результативный или есть лучшие способы?
Я действительно не хочу иметь прямую ссылку от одного объекта к другому, так как это становится довольно беспорядочным ... просто запрашиваю 20 художников, нажимая "ссылку" "массив для каждого объекта художника и возвращение его клиенту кажется наиболее простым. Клиент может отобразить все существующие ссылки. Бит .find (), each () и .find () снова кажутся немного беспорядочными.
Ура! :)