类型错误:无法读取登录路由中未定义的属性“密码”

2023-12-30

当我使用 mysql 数据库中不存在的电子邮件请求 api 时,它会抛出错误,但在相反的情况下它会运行。

Error:

S:\#development\Pepperkart\pepperkart-backend\node_modules\mysql\lib\protocol\Parser.js:437
      throw err; // Rethrow non-MySQL errors
      ^

TypeError: Cannot read property 'password' of undefined
    at Query.db.query (S:\#development\Pepperkart\pepperkart-backend\routes\users.js:19:43)
    at Query.<anonymous> (S:\#development\Pepperkart\pepperkart-backend\node_modules\mysql\lib\Connection.js:525:10)
    at Query._callback (S:\#development\Pepperkart\pepperkart-backend\node_modules\mysql\lib\Connection.js:491:16)
    at Query.Sequence.end (S:\#development\Pepperkart\pepperkart-backend\node_modules\mysql\lib\protocol\sequences\Sequence.js:83:24)
    at Query._handleFinalResultPacket (S:\#development\Pepperkart\pepperkart-backend\node_modules\mysql\lib\protocol\sequences\Query.js:139:8)
    at Query.EofPacket (S:\#development\Pepperkart\pepperkart-backend\node_modules\mysql\lib\protocol\sequences\Query.js:123:8)
    at Protocol._parsePacket (S:\#development\Pepperkart\pepperkart-backend\node_modules\mysql\lib\protocol\Protocol.js:291:23)
    at Parser._parsePacket (S:\#development\Pepperkart\pepperkart-backend\node_modules\mysql\lib\protocol\Parser.js:433:10)
    at Parser.write (S:\#development\Pepperkart\pepperkart-backend\node_modules\mysql\lib\protocol\Parser.js:43:10)
    at Protocol.write (S:\#development\Pepperkart\pepperkart-backend\node_modules\mysql\lib\protocol\Protocol.js:38:16)
[nodemon] app crashed - waiting for file changes before starting...

我的 API 看起来像这样:

router.post('/login', (req, res) => {
    var email = req.body.email
    var password = req.body.password

    var GRAB_USER = `SELECT * FROM user_details WHERE email = ?`
    db.query(GRAB_USER, email, (err, result) => {
        if (err) {
            res.send('email not found')
        } else {
            var user = result[0]

            bcrypt.compare(password, user.password, (err, match) => {
                if (err) {
                    res.send('password not match')
                } else {
                    res.send(user)
                }
            });
        }
    })
})

您的查询很好并且没有给出错误,因此您还应该检查result.length> 0进而res.send('email not found')

router.post('/login', (req, res) => {
  var email = req.body.email
  var password = req.body.password

  var GRAB_USER = `SELECT * FROM user_details WHERE email = ?`
  db.query(GRAB_USER, email, (err, result) => {
    if (err) {
        res.send('email not found')
    } 
    else if (result.length==0) {
      res.send('email not found') //this is what you are missing
    }
    else {
      var user = result[0]

      bcrypt.compare(password, user.password, (err, match) => {
        if (err) {
          res.send('password not match')
        } else {
          res.send(user)
        }
      });
    }
  })
})
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

类型错误:无法读取登录路由中未定义的属性“密码” 的相关文章

  • 如何使用 PHP 通过 JSON 发送 HTML 元素?

    以下功能 try query this gt pdo gt prepare SELECT FROM bookings WHERE TourID AND dTourDate and Status NOT LIKE Cancelled quer
  • MySQL LAST_INSERT_ID() 和 FOUND_ROWS()

    当 PHP 脚本每秒有数百个查询时会发生什么 它会影响这些函数吗 是否保证它们会返回当前脚本中最后一个插入语句中最后插入的 id 它会返回当前脚本中最后一次选择的行数吗 如果同时从另一个脚本进行新的插入或选择 在 FOUND ROWS 的情
  • 选择每组最新的项目[重复]

    这个问题在这里已经有答案了 可能的重复 检索每组中的最后一条记录 https stackoverflow com questions 1313120 retrieving the last record in each group 我有 2
  • 导出socket.io时无法读取未定义的属性“socket”

    我正在尝试模块化我的应用程序 并希望在不同的 js 文件上向客户端发出不同的事件 下面的示例代码显示将从 led js 触发事件 onlinestatus 然而我不断收到消息 类型错误 无法读取未定义的属性 套接字 每当我尝试从 led j
  • Node.js -expressjs -multer req.files 输出为空

    我正在使用 multer 从此表单获取文件
  • 使用 mocha/chai 确保 REST API 提供文件?

    我想验证对 REST API 端点之一的调用是否正在提供文件 但我不确定如何进行操作 并且我没有看到任何相关示例 我确实看过文档 http chaijs com api bdd 但这对我没有多大帮助 服务器端代码本质上是 在 Express
  • 为任何更新查询增加 Mongoose 文档版本的简单方法?

    我想开始利用 Mongooses 文档版本控制 v key 我在实际增加版本值时遇到了问题 然后我发现您必须添加this increment 执行查询时 有没有办法自动递增 目前 我只是将其添加到pre用于更新类型查询的中间件 module
  • 电子无声打印

    我目前正在构建一个电子应用程序 我的本地文件系统上有一个 PDF 我需要以静默方式打印出来 在默认打印机上 我遇到了节点打印机库 但它似乎对我不起作用 有没有一个简单的解决方案可以实现这一目标 首先 几乎不可能理解 无声 打印的含义 因为一
  • Heroku、NodeJs 和 React 问题:SCRIPT5007:无法获取未定义或空引用的属性“应用”

    我猜我对 Polyfill 有一个奇怪的问题 我在我的应用程序中使用了 MERN stack 并推送到了 Heroku 由于某种原因 在我的 Chrome 计算机上我可以查看该网站 但是 在其他计算机上我收到空白页面并在控制台中出现错误 S
  • 软删除最佳实践(PHP/MySQL)

    Problem 在处理产品和订单的 Web 应用程序中 我想维护前员工 用户 与他们处理的订单之间的信息和关系 我想维护过时产品和包含这些产品的订单之间的信息和关系 然而 我希望员工能够整理管理界面 例如删除前员工 过时的产品 过时的产品组
  • 将我的 Laravel 连接到外部数据库

    如何将 Laravel 连接到外部数据库 示例 我的本地计算机上有一个 Laravel 它在 xampp 上运行 我希望它连接到云服务器数据库 打开 env文件并编辑它 只需设置正确的外部数据库凭据 DB CONNECTION mysql
  • SQL 查询结果为字符串(或变量)

    是否可以将SQL查询结果输出到一个字符串或变量中 我的php和mysql不好 假设我有数据库 agents 其中包含列 agent id agent fname agent lname agent dept 使用此查询 sql SELECT
  • 如何在 MySQL 中启用严格 sql_mode?

    我怎样才能启用严格sql mode在 MySQL 中 我想从 SQL 中获取数据并在中处理相同的数据strict mode 我现在的sql mode is mysql gt SELECT sql mode sql mode NO ENGIN
  • 如何通过setTimeout函数定期打印数字?

    var i 0 function counter for i i lt 100 i setTimeout gt console log i 2000 counter 我想以 2 秒的间隔打印 i 但它立即打印 每次打印调用只需要几微秒 为什
  • 使用多个 WHERE 子句更新 Codeigniter 中的批次

    我查看了 CI 用户指南来了解如何处理update batch 并且它似乎只接受一个索引来匹配要更新的行 但在我的例子中 我需要指定两个索引 例如lang and id page我一起用作索引 这样的lang en id page 115是
  • 在调试模式下,使用节点检查器时,mocha 不会停止在规范文件中的调试器语句上

    当我使用 debug brk 运行 mocha 并使用 node inspector 打开 chrome 开发工具时 调试器会跳过我放入规范文件中的任何调试器语句 I can如果我遵循 则让调试器语句在模块文件中工作这个伎俩 https g
  • 使用express.js动态加载路线

    我使用express js作为网络服务器 并且想要一种简单的方法来将所有 app get 和 app post 函数分开以分隔文件 例如 如果我想为登录页面指定 get 和 post 函数 我希望在动态加载的路由文件夹中有一个 login
  • Firebase + Node.js:错误:找不到 XMLHttpRequest 兼容性库

    Firebase Node js On iOS 安装的 Node js npm 安装 firebase save 节点测试 js 其中 test js 是一个非常简单的连接到 Firebase 的脚本 var firebase requir
  • Yii2:无法将列值更新+1

    创建新记录时 我需要将列值更新 1 public function actionCreate model new CreateBookings if model gt load Yii app gt request gt post Yii
  • 如何获取所有mysql元组结果并转换为json

    我能够从表中获取单个数据 但是当我试图获取表上的所有数据时 我只得到一行 cnn execute sql rows cnn fetchall column t 0 for t in cnn description for row in ro

随机推荐