Mongoose 从上下文获取模型与导入-apollo server express&;猫鼬

Mongoose 从上下文获取模型与导入-apollo server express&;猫鼬,mongoose,graphql,apollo-server,Mongoose,Graphql,Apollo Server,我想知道是否有区别,或者阿波罗服务器通过mongoose查询mongodb的最佳实践是什么 从上下文获取模型: import User from './User' const apolloServer = new ApolloServer({ typeDefs, resolvers, context: ({ req, res }) => ({ req, res, User, }), VS 无论使用什么ORM或查询生成器

我想知道是否有区别,或者阿波罗服务器通过
mongoose
查询
mongodb
的最佳实践是什么

从上下文获取模型:

import User from './User'

const apolloServer = new ApolloServer({
    typeDefs,
    resolvers,
    context: ({ req, res }) => ({
      req,
      res,
      User,
    }),
VS


无论使用什么ORM或查询生成器,通过上下文向解析器注入依赖项都会更好

  • 易于测试。我们可以为
    用户
    创建模拟对象并轻松使用它。遵循依赖倒置的原则

  • 如果您有许多冲突解决程序,则不需要为每个冲突解决程序导入
    User
    。只需在要初始化上下文的文件中导入一次。 用于初始化上下文的模块在一个文件中管理,而不是分散在任何地方

  • 有些模块可能只需要初始化一次,然后将实例传递给上下文


  • 无论使用什么ORM或查询生成器,通过上下文向解析器注入依赖项都会更好

  • 易于测试。我们可以为
    用户
    创建模拟对象并轻松使用它。遵循依赖倒置的原则

  • 如果您有许多冲突解决程序,则不需要为每个冲突解决程序导入
    User
    。只需在要初始化上下文的文件中导入一次。 用于初始化上下文的模块在一个文件中管理,而不是分散在任何地方

  • 有些模块可能只需要初始化一次,然后将实例传递给上下文

  • getUser(parent, args, context, info) {
        return context.User.findOne({ _id: args.id})
      },
    
    import User from './User'
    
    getUser(parent, args, context, info) {
        return User.findOne({ _id: args.id})
      },