Mongooseasynchronous/等待与Koa卡住await Model.findOne()。exec()

我有一个Koa 2应用程序,并通过这个函数来处理/注册:

import User from 'models/user'; export const signup = async (ctx, next) => { const { email, password } = ctx.request.body; try { const existingUser = await User.findOne({ email }); if (existingUser) { ctx.body = { error: 'Email is in use' }; return next(); } const user = new User({ email, password, }); await user.save(); ctx.body = { success: true }; } catch (e) { next(e); } return next(); }; 

函数接收到正确的数据,但await User.findOne().exec(); 永远不会返回并卡住。

我认为问题在那里,因为如果我删除,代码正常执行。 如果我切换到Promise像… find().then它也可以工作。 asynchronous/等待正在工作,因为如果我改变为一个await fetch()(模拟asynchronous)它的作品…但这里是我的babelconfiguration

 { "presets" : ["latest", "stage-0"], "plugins": [ ["module-resolver", { "root": ["./src"] }] ] } 

mongoose是4.7.0版本

我写了非常类似的应用程序,但都工作正常。 你使用什么types的承诺? 我的意思是你使用本地的JS诺言或mongoose的承诺? 随着mongoose的承诺,我有问题,所以我改变了原生的JS:

 const mongoose = require('mongoose'); mongoose.Promise = Promise; // Use native Promises mongoose.connect(config.get('mongoose.uri'), config.get('mongoose.options')); ... module.exports = mongoose; 

我开始另一个应用程序,现在正在工作。 不知道发生了什么事。 也许新版本修复。