Как соединить mongodb с graphql без mongoose - PullRequest
0 голосов
/ 30 августа 2018

Как связать mongodb с graphql без mongoose?

Ответы [ 2 ]

0 голосов
/ 30 августа 2018

Выдает ошибку.

    import { MongoClient } from 'mongodb';
import { graphqlExpress } from 'graphql-server-express';
import express from 'express';

const MONGO_URL = 'mongodb://localhost:27017/test';
const app = express();

const startServer = async () => {
  const db = await  MongoClient.connect(MONGO_URL);

  const mongo = {
    posts: db.collection('mern'),

  };

  var schema = buildSchema(`

  type nodemerndata{
    _id : string
    lable: string
    value: string
    class : string
  }
`);

 var root = { 
    allLinks: async (root, data, { mongo: { posts } }) =>
      posts.find({}).toArray(),

}; 

const buildOptions = {
    schema: schema,
    context: { mongo },
    root:root
}



  app.use('/graphql', bodyParser.json(), graphqlExpress(buildOptions));
  app.listen(5000, () => console.log('Now browse to localhost:5000/graphiql'));

 };
startServer();
0 голосов
/ 30 августа 2018

Вы можете использовать библиотеку mongodb и передать ее в качестве аргумента через контекст в graphqlexpress

import { MongoClient } from 'mongodb';
import { graphqlExpress } from 'graphql-server-express';
import express from 'express';

const MONGO_URL = 'mongodb://localhost:27017/your_db';
const app = express();

const startServer = async () => {
  const db = await MongoClient.connect(MONGO_URL);

  const mongo = {
    Links: db.collection('links'),
    Users: db.collection('users')
  };

  const buildOptions = {
    schema: your_schema,
    context: { mongo },
  }

  app.use('/graphql', bodyParser.json(), graphqlExpress(buildOptions));

};
startServer();

Передавая монго через контекст, вы можете получить доступ к ним по своим резольверам:

Query: {
    allLinks: async (root, data, { mongo: { Links } }) =>
      Links.find({}).toArray(),
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...