我目前正在进行项目,并试图获取当前登录的用户ids列表。我读过这个问题,here on StackOverflow,但是我在访问对象的属性时遇到了问题。
目前,我有以下几点:
let sessions = req.sessionStore.sessions
console.log(JSON.stringify(sessions))这在控制台中给出了以下输出:
{"zQPGZTGLKSLna0qsB25UH2B-LHq-bhGj":"{\"cookie\":{\"originalMaxAge\":null,\"expires\":null,\"httpOnly\":true,\"path\":\"/\"},\"onlineUsers\":[],\"passport\":{\"user\":{\"id\":\"102960089981993612086\",\"displayName\":\"John Doe\",\"name\":{\"familyName\":\"Kent\",\"givenName\":\"John\"},\"emails\":[{\"value\":\"user1@gmail.com\",\"type\":\"account\"}],\"photos\":[{\"value\":\"https://lh3.googleusercontent.com/-gSSOtDlqObQ/AAAAAAAAAAI/AAAAAAAAABo/Glisghf57868BXEc/photo.jpg?sz=50\"}],\"provider\":\"google\",\"_raw\":\"{\\n \\\"kind\\\": \\\"plus#person\\\",\\n \\\"etag\\\": \\\"\\\\\\\"EhMivDE25UysA1ltNG8tqFM2v-A/QhO28UAZgzAMK8E3xGjKjeSkOdw\\\\\\\"\\\",\\n \\\"emails\\\": [\\n {\\n \\\"value\\\": \\\"user1@gmail.com\\\",\\n \\\"type\\\": \\\"account\\\"\\n }\\n ],\\n \\\"objectType\\\": \\\"person\\\",\\n \\\"id\\\": \\\"102960089981993612086\\\",\\n \\\"displayName\\\": \\\"John Doe\\\",\\n \\\"name\\\": {\\n \\\"familyName\\\": \\\"Doe\\\",\\n \\\"givenName\\\": \\\"John\\\"\\n },\\n \\\"image\\\": {\\n \\\"url\\\": \\\"https://lh3.googleusercontent.com/-gSSOtDfhjgObQ/AAAAAAAAAAI/AAAAAAAAABo/Glfh5767BXEc/photo.jpg?sz=50\\\",\\n \\\"isDefault\\\": false\\n },\\n \\\"isPlusUser\\\": false,\\n \\\"language\\\": \\\"en_GB\\\",\\n \\\"verified\\\": false,\\n \\\"domain\\\": \\\"gmail.com\\\"\\n}\\n\",\"_json\":{\"kind\":\"plus#person\",\"etag\":\"\\\"EhMivDE25UysA1ltNG8tqFM2v-A/QhO28UAZgzAMK8E3xGjKjeSkOdw\\\"\",\"emails\":[{\"value\":\"user1@gmail.com\",\"type\":\"account\"}],\"objectType\":\"person\",\"id\":\"102960089981993612086\",\"displayName\":\"John Doe\",\"name\":{\"familyName\":\"Doe\",\"givenName\":\"John\"},\"image\":{\"url\":\"https://lh3.googleusercontent.com/-gSSO547gjfgQ/AAAAAAAAAAI/AAAAAAAAABo/GlispvZBXEc/photo.jpg?sz=50\",\"isDefault\":false},\"isPlusUser\":false,\"language\":\"en_GB\",\"verified\":false,\"domain\":\"gmail.com\"},\"userId\":1,\"userEmail\":\"user1@gmail.com\",\"onlineUsers\":[1]}}}","5wgujtyTy4VKE5nuSdFFn5KeKjw_pN7S":"{\"cookie\":{\"originalMaxAge\":null,\"expires\":null,\"httpOnly\":true,\"path\":\"/\"},\"onlineUsers\":[],\"passport\":{\"user\":{\"id\":\"103606132706227313142\",\"displayName\":\"jane doe\",\"name\":{\"familyName\":\"doe\",\"givenName\":\"jane\"},\"emails\":[{\"value\":\"user2@gmail.com\",\"type\":\"account\"}],\"photos\":[{\"value\":\"https://lh3.googleusercontent.com/-2Xu2xfgJLj4/AAAAAAAAAAI/AAAAAAAAAE8/KNkdMSydfe8/photo.jpg?sz=50\"}],\"gender\":\"male\",\"provider\":\"google\",\"_raw\":\"{\\n \\\"kind\\\": \\\"plus#person\\\",\\n \\\"etag\\\": \\\"\\\\\\\"EhMivDE25UysA1ltNG8tqFM2v-A/WzeABRHoHgmU-_X-r9oFDYUKNnY\\\\\\\"\\\",\\n \\\"gender\\\": \\\"male\\\",\\n \\\"emails\\\": [\\n {\\n \\\"value\\\": \\\"user2@gmail.com\\\",\\n \\\"type\\\": \\\"account\\\"\\n }\\n ],\\n \\\"urls\\\": [\\n {\\n \\\"value\\\": \\\"http://www.youtube.com/user/user28469746\\\",\\n
\\\"type\\\": \\\"otherProfile\\\",\\n \\\"label\\\": \\\"Programming Tutorials\\\"\\n }\\n ],\\n \\\"objectType\\\": \\\"person\\\",\\n \\\"id\\\": \\\"103606132706227313142\\\",\\n \\\"displayName\\\": \\\"jane doe\\\",\\n \\\"name\\\": {\\n \\\"familyName\\\": \\\"doe\\\",\\n \\\"givenName\\\": \\\"jane\\\"\\n },\\n \\\"url\\\": \\\"https://plus.google.com/10360613547706227313142\\\",\\n \\\"image\\\": {\\n \\\"url\\\": \\\"https://lh3.googleusercontent.com/-2Xu2fhgJLj4/AAAAAAAAAAI/AAAAAAAAAE8/KNkdMSyEYe8/photo.jpg?sz=50\\\",\\n \\\"isDefault\\\": false\\n },\\n \\\"isPlusUser\\\": true,\\n \\\"language\\\": \\\"en\\\",\\n \\\"circledByCount\\\": 1,\\n \\\"verified\\\": false\\n}\\n\",\"_json\":{\"kind\":\"plus#person\",\"etag\":\"\\\"EhMivDE25UysA1ltNG8tqFM2v-A/WzeABRHoHgmU-_X-r9oFDYUKNnY\\\"\",\"gender\":\"male\",\"emails\":[{\"value\":\"user2@gmail.com\",\"type\":\"account\"}],\"urls\":[{\"value\":\"http://www.youtube.com/user/user4577576\",\"type\":\"otherProfile\",\"label\":\"Programming Tutorials\"}],\"objectType\":\"person\",\"id\":\"1036061327056676727313142\",\"displayName\":\"jane doe\",\"name\":{\"familyName\":\"doe\",\"givenName\":\"matt\"},\"url\":\"https://plus.google.com/103606132706227313142\",\"image\":{\"url\":\"https://lh3.googleusercontent.com/-2Xu2x56564Lj4/AAAAAAAAAAI/AAAAAAAAAE8/KNkdM544EYe8/photo.jpg?sz=50\",\"isDefault\":false},\"isPlusUser\":true,\"language\":\"en\",\"circledByCount\":1,\"verified\":false}}}}"}如您所见,有两个登录用户。我想迭代这个对象,并将passport中的两个用户ids输出到控制台。
我试过以下几种方法:
for (sesh in sessions) {
console.log(sessions[sesh].passport.user.id)
}但这给了我一个未知数。
我也尝试过使用sessions.forEach(),但是这也不起作用。
我做错了什么?我需要先解析JSON吗?
发布于 2018-04-22 15:44:41
数据存储为JSON,您需要解析它,以便能够检索属性:
for (sesh in sessions) {
console.log(JSON.parse(sessions[sesh]).passport.user.id)
}https://stackoverflow.com/questions/49966705
复制相似问题