服务器发送成功,即使没有发现任何
问题描述:
我从我的输入字段将数据发送到我的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)
}
})
答
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');
}
}
因为没有错误,当发生错误时 – linasmnew
我温控功能findUser抛出一个错误 –
“User.findOne”抓只叫如果找不到相等的话就返回一个空文档,所以虽然你的'findUser'可以抛出一个错误,但它不会触发它。 –