2016-11-27 24 views
4

我有一个兴亚2应用程序和岗位/注册由该函数处理:猫鼬异步/与兴亚等待获得上等待Model.findOne()卡EXEC()

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(); 
}; 

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

我认为问题在那里,因为如果我删除,代码正常执行。如果我切换到Promise像... find().then它也可以工作。 异步/等待)正在或者,因为如果我更改为取的await((模拟异步),它的工作原理......但这里是我的巴贝尔配置

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

猫鼬是4.7.0

+0

你的代码没有显示你使用'.exec()'(尽管它可能不是严格必要的)。另外,你确定它不会抛出异常吗?你的代码在发生异常时调用'next'两次(一次使用错误参数,然后使用'return next')。 – robertklep

+0

啊对不起..复制一个旧的代码..但也不工作......并且没有例外......并且已经修复了两个电话......谢谢 –

回答

0

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

0
版本

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

const mongoose = require('mongoose'); 

mongoose.Promise = Promise; // Use native Promises 

mongoose.connect(config.get('mongoose.uri'), config.get('mongoose.options')); 
... 
module.exports = mongoose; 
+0

你不应该在你的回答中要求澄清,评论是澄清,如果有需要 –

+0

我最近开始了另一个应用程序......现在它正在工作......不知道发生了什么.. CLosing –