服务器发送成功,即使没有发现任何

服务器发送成功,即使没有发现任何

问题描述:

我从我的输入字段将数据发送到我的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'可以抛出一个错误,但它不会触发它。 –

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

你的方式奏效!谢谢! –

它发送成功,因为没有你查询的error'ed,只是因为它没有发现任何东西,并不意味着查询失败,因为它明显成功,如果什么都查不到你'寻找存在与否。

要在情况下发送一个错误的没有找到您需要检查,如果反应是在你想在没有用户发现你得到一个null值发送错误

这种情况下空。您可以尝试把更多的逻辑上的成功参数与例如:

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