从上下文中获取模型与导入 - apollo server express & mongoose
Posted
技术标签:
【中文标题】从上下文中获取模型与导入 - apollo server express & mongoose【英文标题】:Get model from context vs Import - apollo server express & mongoose 【发布时间】:2020-11-08 03:13:47 【问题描述】:我想知道是否有区别,或者apollo-server
通过mongoose
查询mongodb
的最佳做法是什么
从上下文中获取模型:
import User from './User'
const apolloServer = new ApolloServer(
typeDefs,
resolvers,
context: ( req, res ) => (
req,
res,
User,
),
getUser(parent, args, context, info)
return context.User.findOne( _id: args.id)
,
VS
import User from './User'
getUser(parent, args, context, info)
return User.findOne( _id: args.id)
,
【问题讨论】:
【参考方案1】:无论您使用什么 ORM 或查询构建器,通过上下文将依赖项注入解析器都会更好。
易于测试。我们可以为User
创建模拟对象并轻松使用它。遵循依赖倒置原则。
如果您有多个解析器,则无需为每个解析器导入User
。只需在初始化上下文的文件中导入一次。
用于初始化上下文的模块在一个文件中管理,而不是分散在各处
某些模块可能只需要初始化一次并将实例传递给上下文。
【讨论】:
以上是关于从上下文中获取模型与导入 - apollo server express & mongoose的主要内容,如果未能解决你的问题,请参考以下文章
如何将 React 钩子(useContext、useEffect)与 Apollo 反应钩子(useQuery)结合起来
在 Apollo Server 上下文中获取 NextAuth.js 用户会话
Apollo启动报Config service failed to start in 120 seconds! Please check ./service/apollo-ser
Apollo启动报Config service failed to start in 120 seconds! Please check ./service/apollo-ser