2017-10-21 53 views
1

我從我的輸入字段將數據發送到我的API:服務器發送成功,即使沒有發現任何

$.ajax({ 
     url: '/api/login', 
     type: 'GET', 
     dataType: 'json', 
     ContentType: 'application/json', 
     data: {formData}, 
     success: (data) => { 
     console.log('SUCCESS') 
     console.log(data) 
     this.setState({ 
      isInProcess: false 
     }) 
     }, 
     error: (jqXHR) => { 
     console.log(jqXHR) 
     console.log('ERROR') 
     this.setState({isInProcess: false}) 
     } 
    }) 

在我的服務器端我有一個功能,看看我有需要的用戶在DB:

async function findUser(data) { 
    try { 
    const user = await User.findOne({email: data.email, 
            password: data.password}) 
    console.log('User was found') 
    return { user } 
    } catch (err) { 
    console.log('error', err) 
    throw err 
    } 
} 

這將在這裏執行:

app.get('/api/login', async (req, res) => { 
    const data = req.query 
    try { 
    const foundUserData = await findUser(data.formData) 
    return res.json(foundUserData) 
    } catch (err) { 
    return res.status(400).json(err) 
    } 
}) 

它工作正常,但如果用戶沒有在數據庫中找到我反正發送成功。 enter image description here爲什麼?

+0

因爲沒有錯誤,當發生錯誤時 – linasmnew

+0

我溫控功能findUser拋出一個錯誤 –

+0

「User.findOne」抓只叫如果找不到相等的話就返回一個空文檔,所以雖然你的'findUser'可以拋出一個錯誤,但它不會觸發它。 –

回答

2

await findUser(data.formData)不會拋出錯誤,返回null或用戶對象。您可以檢查以下東西

app.get('/api/login', async (req, res) => { 
    const data = req.query 
    try { 
    const foundUserData = await findUser(data.formData) 
    if(foundUserData && foundUserData.user) { 
     return res.json(foundUserData) 
    } else { 
     return res.status(400).json({message: 'User not found'}); 
    } 
    } catch (err) { 
    return res.status(500).json(err) 
    } 
}) 
+0

你的方式奏效!謝謝! –

0

它發送成功,因爲沒有你查詢的error'ed,只是因爲它沒有發現任何東西,並不意味着查詢失敗,因爲它明顯成功,如果什麼都查不到你'尋找存在與否。

要在情況下發送一個錯誤的沒有找到您需要檢查,如果反應是在你想在沒有用戶發現你得到一個null值發送錯誤

0

這種情況下空。您可以嘗試把更多的邏輯上的成功參數與例如:

success: function (data) { 
    if(!!data && data != null) { 
     alert('Success'); 
    } else { 
     alert('No data'); 
    } 
} 
相關問題