Невозможно извлечь поле массива из файла JSON. Вместо этого мой код возвращает "{}" - PullRequest
0 голосов
/ 14 июля 2020

Я хочу вернуть (res. json) массив чатов в этой модели, но когда я пытаюсь это сделать, я получаю "{}".

С другой стороны, когда я я печатаю другие поля, такие как адрес электронной почты или имя_первого, я получаю результаты. Однако, думаю, проблема только в массивах. Я использую MongoDB для хранения данных и Postman для запросов

ПОМОГИТЕ!

Вот моя модель JSON.

{
        "_id": "5f0d5ea45eeeaa3730eaf96c",
        "first_name": "Test_firstName",
        "last_name": "Test_lastName",
        "email": "test@email.com",
        "password": "$2b$10$B8EDo3KkJZ9PjGveWfouM.1XhaPSx9xrM3c6Mk2HC02AUNnO99Of.",
        "address": "Home",
        "chats": [
            {
                "id": "985234e2-86c6-4375-968a-96661c37ec32",
                "name": "Community",
                "messages": [
                    {
                        "id": "35c7bf4d-e556-40bd-9429-16e436c599f4",
                        "time": "11:10",
                        "message": "Hi",
                        "sender": "user1"
                    },
                    {
                        "id": "a74ad9ba-44b9-43af-90a0-cf9480d9a748",
                        "time": "11:11",
                        "message": "hey",
                        "sender": "user2"
                    }
                ]
            }
        ],
        "createdAt": "2020-07-14T07:28:36.148Z",
        "updatedAt": "2020-07-14T07:28:36.148Z",
        "__v": 0
    }

Вот мой код, чтобы найти чат от моей модели. Обратите внимание на строки с "<" </p>

const find_chat = (req, res, next) => {
  let email = req.body.email;
  let chatId = req.body.chatId;
  User.findOne({ email: email })
    .then(async (response) => {
      

> let x = [];
>           x = response.chats;
>           res.json({
>             response,
>           });

    })
    .catch((error) => {
      res.json({
        message: "An error occured",
      });
    });
};

Вот ожидаемый результат

{
                [
                    {
                        "id": "35c7bf4d-e556-40bd-9429-16e436c599f4",
                        "time": "11:10",
                        "message": "Hi",
                        "sender": "Advait"
                    },
                    {
                        "id": "a74ad9ba-44b9-43af-90a0-cf9480d9a748",
                        "time": "11:11",
                        "message": "hey",
                        "sender": "sharma"
                    }
                ]
}

1 Ответ

0 голосов
/ 14 июля 2020

Вы можете попробовать так:

const data = {
        "_id": "5f0d5ea45eeeaa3730eaf96c",
        "first_name": "Test_firstName",
        "last_name": "Test_lastName",
        "email": "test@email.com",
        "password": "$2b$10$B8EDo3KkJZ9PjGveWfouM.1XhaPSx9xrM3c6Mk2HC02AUNnO99Of.",
        "address": "Home",
        "chats": [
            {
                "id": "985234e2-86c6-4375-968a-96661c37ec32",
                "name": "Community",
                "messages": [
                    {
                        "id": "35c7bf4d-e556-40bd-9429-16e436c599f4",
                        "time": "11:10",
                        "message": "Hi",
                        "sender": "user1"
                    },
                    {
                        "id": "a74ad9ba-44b9-43af-90a0-cf9480d9a748",
                        "time": "11:11",
                        "message": "hey",
                        "sender": "user2"
                    }
                ]
            }
        ],
        "createdAt": "2020-07-14T07:28:36.148Z",
        "updatedAt": "2020-07-14T07:28:36.148Z",
        "__v": 0
    }
    
    let messages = data.chats[0].messages;
    console.log(messages)

В соответствии с последующим запросом измените его на

 let x = JSON.stringify(response.chats[0].messages);
 res.json({
response});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...