从上下文获取模型与导入 - apollo server express & mongoose

Get model from context vs Import - apollo server express & mongoose

我想知道是否存在差异,或者 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})
  },

无论您使用什么 ORM 或查询构建器,通过上下文将依赖项注入解析器都更好。

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

  2. 如果您有很多解析器,则不需要为每个解析器导入 User。只需在初始化上下文的文件中导入一次。 初始化上下文的模块集中在一个文件中,而不是分散在各处

  3. 有些模块可能只需要初始化一次,然后将实例传递给context。