即使没有找到任何内容,服务器也会成功发送

时间:2017-10-21 14:06:26

标签: 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})
       } 
    })

在我的服务器端我有一个函数来查看我是否在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)
  }
})

它工作正常,但如果在db中找不到用户,我仍会发送成功。enter image description here为什么?

3 个答案:

答案 0 :(得分:2)

[HttpPost] public void SaveImage(string base64image) { if (string.IsNullOrEmpty(base64image)) return; var t = base64image.Substring(22); // remove data:image/png;base64, byte[] bytes = Convert.FromBase64String(t); Image image; using (MemoryStream ms = new MemoryStream(bytes)) { image = Image.FromStream(ms); } var randomFileName = Guid.NewGuid().ToString().Substring(0, 4) + ".png"; var fullPath = Path.Combine(Server.MapPath("~/Content/Images/"), randomFileName); image.Save(fullPath, System.Drawing.Imaging.ImageFormat.Png); } 不会抛出错误,返回await findUser(data.formData)或用户对象。您可以查看以下内容

null

答案 1 :(得分:0)

它发送成功,因为没有任何查询错误,只是因为它没有找到任何内容并不意味着查询失败,因为它显然成功地找出了您是否正在寻找什么是否存在。

要在未找到的情况下发送错误,您需要检查响应是否为空,在这种情况下您要发送错误

答案 2 :(得分:0)

如果没有找到用户,则会获得null值。您可以尝试在成功参数上添加更多逻辑,例如:

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