最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

对象属性未定义不存在

网站源码admin42浏览0评论

对象属性未定义/不存在

对象属性未定义/不存在

我遇到了客户电子邮件输入与 mySQL 数据库匹配的问题,稍后我会比较数据库中的密码,但是,它不起作用。我找不到解决方案

运行查询返回 1 个匹配对象,输出值,然而,object.property 返回未定义,因此,我假设该对象没有任何属性。我需要能够根据需要访问对象键。

`router.post('/login', async function (req, res) {
    const userData = req.body;
    const enteredEmail = userData.email;
    const enteredPassword = userData.password;

    const [existingUser] = await db.query(`SELECT * FROM users WHERE email = ?`, [enteredEmail,]);
    console.log(Object.keys(existingUser).length);
    console.log(typeof existingUser);
    console.log(existingUser);
    const check = existingUser.hasOwnProperty('email');
    console.log(check);
    console.log(existingUser.email);

I get 

1
object
[
  {
    email: '[email protected]',
    password: '$2a$10$yK8Pvrc2BzIXKez2X5XOYuS1IInyAs/uugOSke4HWNWPVzSzfavta'
  }
]
false
undefined
`
回答如下:

你有一个对象数组,你必须通过它们的索引访问这些元素(如果数组中只有一个元素则为 0)

此代码将始终返回 false

const check = existingUser.hasOwnProperty('email');

并且此代码将始终未定义

console.log(existingUser.email);

所以你的代码应该是这样的

    const userData = req.body;
    const enteredEmail = userData.email;
    const enteredPassword = userData.password;

    const [existingUser] = await db.query(`SELECT * FROM users WHERE email = ?`, [enteredEmail,]);
    console.log(Object.keys(existingUser).length);
    console.log(typeof existingUser);
    console.log(existingUser);
    const check = existingUser[0].hasOwnProperty('email');//index 0
    console.log(check);
    console.log(existingUser[0].email);//access email key of the 1st element in your array

输出

1
"object"
[
  {
    email: '[email protected]',
    password: '$2a$10$yK8Pvrc2BzIXKez2X5XOYuS1IInyAs/uugOSke4HWNWPVzSzfavta'
  }
]
true
"[email protected]"

与本文相关的文章

发布评论

评论列表(0)

  1. 暂无评论