2016-11-27 53 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 –