Мангусты заселяются из внешних результатов

#node.js #mongodb #mongoose #mongoose-schema #mongoose-populate

Вопрос:

Учитывая, что у меня 2 совершенно разных сервера и базы данных.

 Server A, Database A: Database A's model as ModelA :{  _id: ObjectId(),  fieldA: any }  Server B, Database B: Database B's model as ModelB :{  _id: ObjectId(),  fieldB: any }  Database A _id === Database B _id  Expected result:[  { _id, fieldA, fieldB }  ... ]  

Сценарий:
С сервера A, получив api с сервера B, я получил список результатов ModelB. Я хотел бы заполнить модель, используя результат выборки.

Допустим,
Результат поиска модели () = результат поиска модели () =
результат поиска модели () = результат

Мое решение до сих пор:

Решение A:
Поток: Извлечение с сервера B =gt; Извлечение списка _id с помощью карты =gt;gt; gt;gt;ModelA.find(listOfExtractedIds) =gt; сравнение и объединение результатов по вложенному циклу gt;Результат по результату
*Это крайне неэффективно, так как задействовано несколько циклов.

Решение B:
Потоковая выборка с сервера B =gt; gt;ModelA.заполнить(resultB, {путь:»_id»})
* Это мое идеальное решение, но оно не работает, потому что сервер A не имеет доступа к модели B и в нем нет ссылки.

Есть ли лучший подход к этой проблеме? Или есть способ, чтобы решение B работало так, как ожидалось?

*PS Сервер A не имеет доступа к ModelB, который находится на сервере B.
*Ссылка не указана на обеих моделях.

Ответ №1:

Ну, решение A является единственным решением в этой ситуации, потому что, по-видимому, две разные базы данных не могут объединять данные.

Единственное, что вы могли бы сделать, это оптимизировать решение A для повышения производительности, например, используя какой-то кэш.