node.js - 服务器发送成功,即使没有找到任何东西

标签 node.js database express mongoose

我将输入字段中的数据发送到我的 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})
       } 
    })

在我的服务器端我有一个函数来查看我是否在数据库中有需要的用户:

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为什么?

最佳答案

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

关于node.js - 服务器发送成功,即使没有找到任何东西,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46864085/

相关文章:

Javascript 无法使用 fetch 捕获错误

node.js - 文件事件上的 Express Busboy 未触发

node.js - 使用 static()、staticCache() 和 compress() node.js 连接中间件

javascript - findOneAndUpdate mongoDB 未正确返回

javascript - 在 Heroku 前端部署 Angular/Express 应用程序时出现问题无法访问 API 端点

javascript - PhantomJS 在基本测试中出现错误

node.js - Browserify - 如何在浏览器中调用通过 browserify 生成的文件中捆绑的函数

php - 用于列表样式 PHP 项目的标准 OOP 技术

mysql - 如果某个项目出现超过 10 次,请将其删除并存储新的

java - 如何初始化java数组大小来存储数据库ResultSet数据?