Я хочу использовать коллекции из нескольких баз данных на одном сервере Apollo. Что мне делать? - PullRequest
0 голосов
/ 22 апреля 2020

сервер. js

const server = new ApolloServer({
  introspection: true,
  typeDefs: schema,
  resolvers,
  playground: true,
  onHealthCheck: () => {
    return new Promise((resolve, reject) => {
      // Replace the `true` in this conditional with more specific checks!
      if (true) {
        resolve();
      } else {
        reject();
      }
    });
  },

  formatError: error => {
    const message = error.message
      .replace('SequelizeValidationError: ', '')
      .replace('Validation error: ', '');
    return {
      ...error,
      message,
    };
  },

  context: async ({ req, connection }) => {
    if (connection) {
      return {
        models,
      };
    }

    if (req) {
      return {
        models,
      };
    }
  },
});


mongoose.connectDb().then( (mongoResult) => {
  console.log('mongoDB Connected ', mongoResult.STATES[mongoResult.connection._readyState])
    httpServer.listen({ port }, () => {
      console.log(`Apollo Server on http://localhost:${port}/graphql`);
    });
});

пн goose. js

const connectDb = () => {
  return mongoose.connect(
    config.mongo.main, // mongodb://localhost:27017/[mydatabaseName]
    { useNewUrlParser: true, useUnifiedTopology: true, useCreateIndex : true },
  );
};

модели / tempModel. js

import mongoose from 'mongoose';

const tempSchema = new mongoose.Schema({
  id: {
    type:  String,
    field : "_id",
  },
})

const Temp = mongoose.model('Temp', tempSchema);

export default Temp;

models / index. js


import Temp from './tempModel';
const models = {
    Temp
}

export default models;

Он использовался до тех пор, пока на одном хосте не появилось несколько баз данных. Однако, поскольку на одном хосте начали создаваться несколько баз данных, контекст был изменен. Нужна помощь

Я хочу, чтобы CRUD обычно работал в различных коллекциях в нескольких базах данных на одном хосте.

...