未处理的承诺拒绝错误(不带catch块的异步功能)

时间:2018-08-08 01:04:56

标签: javascript node.js mongodb reactjs express

我浏览了有关此主题的其他问题,但找不到解决此问题的方法。我正在按照this tutorial使用MERN堆栈构建待办事项应用程序(我在16:00分钟左右被困住了)。

当我尝试启动服务器时,我收到了弃用警告,提示“当前URL字符串解析器已弃用,并将在以后的版本中删除。要使用新的解析器,请将选项{useNewUrlParser:true}传递给MongoClient.connect”,以及未处理的承诺拒绝-“此错误是由于在没有catch块的情况下抛出异步函数而引起的,或者是拒绝了未经.catch()处理的承诺”。

我尝试在代码中添加catch块,但仍然收到错误。任何帮助,将不胜感激。

const { GraphQLServer } = require('graphql-yoga')

const mongoose = require('mongoose');
mongoose.connect('mongodb://localhost/test');

const Todo = mongoose.model('Todo', {
	text: String,
	complete: Boolean
});


const typeDefs = `
  type Query {
    hello(name: String): String!
  }
  type Todo {
  	id: ID
  	text: String!
  	complete: Boolean!
  }
  type Mutation {
  	createTodo(text: String!): Todo
  }
`
;

const resolvers = {
  Query: {
    hello: (_, { name }) => `Hello ${name || "World"}`,
  },
  Mutation: {
  	createTodo: async (_, { text }) => {
  		const todo = new Todo({ text, complete: false });
  		await todo.save();
  		return todo;
  	}
  }
};

const server = new GraphQLServer({ typeDefs, resolvers })
mongoose.connection.once('open', function() {
  server.start(() => console.log('Server is running on localhost:4000'));
});

0 个答案:

没有答案