Доступ к объектам из await - NodeJS - PullRequest
1 голос
/ 24 марта 2019

Один из моих маршрутов - возвращение объекта из mongodb.Когда я получаю объект, мне нужно получить доступ к его ключам, но каждый ключ, к которому я пытаюсь получить доступ, возвращается с неопределенным результатом.

Код:

const express = require('express')
const Review = require('../models/review')
const router = new express.Router()


router.get('/',async (req,res)=>{
    try{
        const results = await Review.findById('some_id')
        const finalResult = JSON.parse(results) //still failing
        res.send(finalResult.rating)
    }catch (e){
        res.status(400).send(e)
    }
})

module.exports = router

Ответ:

{
"_id": "",
"reviewerName": "Jane Doe",
"reviewDate": "2019-02-19T19:30:54.000Z",
"siteSource": "ReviewSite",
"rating": 5,
"reviewText": "Some text",
}

Я пытался получить доступ к рейтингу с помощью `console.log (results.rating), но возвращается как неопределенное.

Ответы [ 4 ]

1 голос
/ 24 марта 2019

Ответ в формате JSON. Вы должны преобразовать json в объект javascript, используя JSON.parse()

0 голосов
/ 25 марта 2019

Мне нужно было JSON.stringify() сначала объект, а затем JSON.parse(), чтобы получить доступ к ключам внутри.

const test = JSON.stringify(results)        
const test2 = JSON.parse(test)
console.log(test2.rating)
0 голосов
/ 24 марта 2019

просто измените его на

router.get('/',async (req,res)=>{
     try{
              const results = await Review.findById('some_id')
              const keys = Object.keys(results)
              res.send(keys)
     }catch (e){
     res.status(400).send()
    }  
})
0 голосов
/ 24 марта 2019

Преобразование результата в объект JSON с использованием метода JSON.Parse ().

router.get('/',async (req,res)=>{
    try{
        const results = await Review.findById('some_id')
        const finalResult = JSON.parse(results);
        res.send(finalResult.rating)
    }catch (e){
        res.status(400).send()
    }  
})
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...