Хотя Model.find()
возвращает Query
, но это тип PromiseLike
.
Вот документ: http://mongoosejs.com/docs/promises.html#built-in-promises
И в graphql
resolver
вы можете вернуть promise
, использовать async/await
или просто вернуть постоянное значение.
https://graphql.org/learn/execution/#asynchronous-resolvers
During execution, GraphQL will wait for Promises, Futures, and Tasks to complete before continuing and will do so with optimal concurrency.
Model.find().exec()
вернул полноценный обещание, тоже нормально работает.
Я думаю, если у него проблемы с производительностью. Это проблема mongoose
, связанная с .find()
и .exec()
и временем выполнения вашего резолвера. Это еще одна проблема. Вы можете посмотреть про github.com/facebook/dataloader
Большой. Спасибо! Но есть ли какой-нибудь рекомендуемый подход? Например, чтобы выбрать .exec () вместо постоянного значения или .find (), или это не имеет значения? Может ли это повлиять на производительность или что-то еще?