Моя мутация GraphQL не сохраняется в моем MongoDB

#javascript #mongodb #mongoose #graphql #netlify

#javascript #mongodb #мангуст #graphql #netlify

Вопрос:

Как следует из названия, моя мутация addEatery не сохраняется в моей базе данных. В моих решателях запрос работает отлично, но мутация по какой-то причине этого не делает. Имейте в виду, я все еще новичок в GraphQL.

 const Eatery = require("./server/models/Eatery");

module.exports = db => ({
  Query: {
    eateries: async () =>
      await db
        .collection("eateries")
        .find()
        .toArray()
  },

  Mutation: {
      addEatery: async (_, {id, name, description, address, city, postCode, phoneNumber, businessHours, foodType, veganFriendly, vegetarianFriendly, halal, kosher, dogFriendly, childFriendly, ethical, alcohol, price, website }) => {
        const eatery = new Eatery({id, name, description, address, city, postCode, phoneNumber, businessHours, foodType, veganFriendly, vegetarianFriendly, halal, kosher, dogFriendly, childFriendly, ethical, alcohol, price, website});
        eatery.save();
        return eatery;
    },
  } 
});  

Теперь он возвращает объект новых данных, с которыми я мутировал на игровой площадке GQL, но когда я проверяю базу данных, она там не обновилась.

По какой-то причине этот код не устраивает, когда я использую await . Это просто дает мне 500 ответ от сервера: (

   Mutation: {
      addEatery: async (_, {id, name, description, address, city, postCode, phoneNumber, businessHours, foodType, veganFriendly, vegetarianFriendly, halal, kosher, dogFriendly, childFriendly, ethical, alcohol, price, website }) => {
        const eatery = new Eatery({id, name, description, address, city, postCode, phoneNumber, businessHours, foodType, veganFriendly, vegetarianFriendly, halal, kosher, dogFriendly, childFriendly, ethical, alcohol, price, website});
        await eatery.save();
        return eatery;
    },
  }   

Я использую лямбда-функции Netlify для размещения этого.

Мой индексный файл для моей конечной точки ниже:-

 const { ApolloServer } = require("apollo-server-lambda");
const typeDefs = require("./typedefs");
const resolvers = require("./resolvers");
const connectToMongoDB = require("./db");

exports.handler = async function(event, context) {
  const db = await connectToMongoDB();
  const server = new ApolloServer({
    typeDefs,
    resolvers: resolvers(db)
  });
  return new Promise((yay, nay) => {
    const cb = (err, args) => (err ? nay(err) : yay(args));
    server.createHandler()(event, context, cb);
  });
};  

Мой файл DB

 const MongoClient = require("mongodb").MongoClient;
const URI = process.env.DB_URI;
const DB_NAME = process.env.DB_NAME;

let cachedDb = null;
module.exports = () => {
  if (cachedDb amp;amp; cachedDb.serverConfig.isConnected()) {
    return Promise.resolve(cachedDb);
  }
  return MongoClient.connect(URI, { useNewUrlParser: true }).then(client => {
    cachedDb = client.db(DB_NAME);
    return cachedDb;
  });
};  

Это typeDefs

 const { gql } = require("apollo-server-lambda");

module.exports = gql`
  type Eatery {
    id: String!
    name: String!
    description: String
    businessHours: String
    address: String!
    city: String!
    postCode: String!
    phoneNumber: String
    foodType: String!
    veganFriendly: Boolean
    vegetarianFriendly: Boolean
    halal: Boolean
    kosher: Boolean
    dogFriendly: Boolean
    childFriendly: Boolean
    ethical: Boolean
    website: String
    alcohol: Boolean
    price: String
  }
  type Query {
    eatery(id: String!): Eatery
    eateries: [Eatery]
    getFoodType(foodType: String): [Eatery]
  }
  type Mutation {
    addEatery(id: String, name: String!, description: String!, businessHours: String, address: String!, city: String!, postCode: String!, phoneNumber: String, foodType: String!, veganFriendly: Boolean, vegetarianFriendly: Boolean, halal: Boolean, kosher: Boolean, dogFriendly: Boolean, childFriendly: Boolean, ethical: Boolean, alcohol: Boolean, price: String, website: String): Eatery
    editEatery(id: String, name: String, description: String, businessHours: String, address: String, city: String!, postCode: String!, phoneNumber: String, foodType: String, veganFriendly: Boolean, vegetarianFriendly: Boolean, halal: Boolean, kosher: Boolean, dogFriendly: Boolean, childFriendly: Boolean, ethical: Boolean, alcohol: Boolean, price: String, website: String): Eatery
    deleteEatery(id: String, name: String, description: String, businessHours: String, address: String, city: String!, postCode: String!, phoneNumber: String, foodType: String, veganFriendly: Boolean, vegetarianFriendly: Boolean, halal: Boolean, kosher: Boolean, dogFriendly: Boolean, childFriendly: Boolean, ethical: Boolean, alcohol: Boolean, price: String, website: String): Eatery
  }
`;  

Любая идея относительно того, почему эта мутация на самом деле не сохраняет эти данные в моем MongoDB, была бы высоко оценена!

Комментарии:

1. Да, вы должны await сохранить. » Это просто возвращает мне 500 ответов с сервера : ( » — тогда где-то в журналах вашего сервера должна быть причина исключения.

2. Хорошая идея, к сожалению, у mlab нет никаких журналов сервера, к моему ужасу: (