javascript - 无法访问对象的属性,但该对象存在

标签 javascript async-await immutability

<分区>

我试图根据年龄对从数据库返回的一组用户对象进行排序,但发生了一些非常奇怪的事情。

以下代码无效:

async function getAllUsers(){


    let _users = await User.find({});

    //error here, it shows that cannot read age of null, but why is         
    //stats undefined? I thought the async/await already resolved the promise?
    let sorted = _users.sort((a, b) => b.stat.age - a.stat.age)

    return sorted;
}

这是经过大量研究后的工作代码,但我不确定为什么会这样

async function getAllUsers(){

    let _users = await User.find({});
    let deepclone = JSON.parse(JSON.stringify(_users))

    let sorted = deepclone.sort((a, b) => b.stat.age - a.stat.age)

    return sorted;
}

我知道我正在从 _users 创建一个全新的对象,这样 deepclone 就失去了对 _users 数组对象的引用,但是这对解决问题有何帮助?

//=======只是说清楚=======//

 let _users = await User.find({})
 console.log(_users)
    /* this logs
   {
     _id: 65a4d132asd,
     stat: { age: 24 }
    }
*/

 //without doing JSON.parse & JSON.stringify
 _users.sort((a,b) => {
     console.log(a)//this logs ---> {_id: 65a4d132asd,stat: { age: 24 }}
     console.log(a.stat)//this logs ---> undefined
  })

  //with JSON.parse & JSON.stringify
  let deepclone = JSON.parse(JSON.stringify(_users))
   deepclone.sort((a, b) => {
   console.log(a)//this logs ---> {_id: 65a4d132asd,stat: { age: 24 }}
   console.log(a.stat)//this logs ---> 24
   })

最佳答案

 // Maybe this line is not correct

 let _users = await User.find({});

 // Try to console _users 

// It's might be the _users was not return a correctly format data, then you use JSON.parse(JSON.stringify(_users)) to stringify the _users, so it works correctly

关于javascript - 无法访问对象的属性,但该对象存在,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56607334/

相关文章:

JavaScript/HTML : Load Html into FrameSet with onunload event

javascript - Angular 2+ 窗口属性未定义

windows-phone-7 - 在 Visual Studio 2012 中针对 WP7 异步驱动的项目

c# - 等待 PushModalAsync 表单以 xamarin 表单关闭

javascript - 如何连接数组不可变的方式JS

javascript - Bootstrap 中视口(viewport)更改时如何更改元素的类

javascript - 将 Html 文本输入值获取到 Javascript 函数中

Javascript - 类型错误 : x is not a function at done

javascript - 我如何解决 moment.js 中的可变性问题?

tree - 本地编辑纯功能树