Почему появляется сообщение об ошибке undefined для существующего индекса - PullRequest
0 голосов
/ 12 июля 2020

Я использовал этот код в своем API для получения набора результатов. Здесь он дает мне набор результатов, но когда я пытаюсь получить доступ к набору результатов, он дает мой undefined

Ниже приведен код, который я использую в API

getComments: async(req, res) => 
{
    const { post_id, user_id } = req.body;
    commentSchemaModel.aggregate([{
            "$match": { post_id: post_id }
        },
        { "$sort": { "createdAt": -1 } },
        {
            "$lookup": {
                "from": subcommentSchemaModel.collection.name,
                "localField": "_id",
                "foreignField": "comment_id",
                "as": "subcoms"
            }
        },
        {
            "$project": {
                "_id": 1,
                "user_id": 1,
                "user_name": 1,
                "isUserLiked": 1,
                "comment": 1,
                "user_img": 1,
                "post_id": 1,
                'likes': 1,
                "usersLiked": 1,
                "subcoms": "$subcoms",
                "created": 1,
                "createdAt": 1,
                "updatedAt": 1,
            }
        },
    ]).then(async function(comments) {
        if (comments.length === 0) {
            res.send({ error: true, data: "No Comments" });
        } else {
            comments.forEach((comment) => {
                comment.isUserLiked = comment.usersLiked.some(id => id.equals(user_id))
            });
            
            comments.subcoms.forEach((subcomment) => {
                subcomment.isUserLiked = subcomment.usersLiked.some(id => id.equals(user_id))
            });
            res.send({ error: false, data: comments });
        }
    });
}

Это говорит, что comments.subcoms не определено, но comments имеет subcoms. Набор comments выглядит так:

[
        {
            "_id": "5f0a8b3e3a95280017d6e985",
            "isUserLiked": false,
            "likes": 0,
            "usersLiked": [],
            "user_id": "5ef9a7a2922eba0017ce47e0",
            "post_id": "5f0a8ab13a95280017d6e97f",
            "comment": "bijjaaa",
            "user_name": "Sudesh",
            "user_img": "https://platform-lookaside.fbsbx.com/platform/profilepic/?asid=1846836948784193&width=400&ext=1596011605&hash=AeRsB0QJQH7edpRT",
            "created": 1594526526162,
            "createdAt": "2020-07-12T04:02:06.164Z",
            "updatedAt": "2020-07-12T04:02:06.164Z",
            "subcoms": [
                {
                    "_id": "5f0ab9a5e8811835342d46fb",
                    "isUserLiked": false,
                    "likes": 0,
                    "usersLiked": [],
                    "user_id": "5ef60bba10e9090017e2c935",
                    "comment_id": "5f0a8b3e3a95280017d6e985",
                    "comment": "ponnaya",
                    "user_name": "Suthura",
                    "user_img": "1594395502410-image_cropper_1594395497877.jpg",
                    "imagesource": "userimage",
                    "created": 1594538405044,
                    "createdAt": "2020-07-12T07:20:05.050Z",
                    "updatedAt": "2020-07-12T07:20:05.050Z",
                    "__v": 0
                }
            ]
        }
    ]

В чем может быть ошибка и как ее исправить?

Ответы [ 2 ]

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

Согласно @KarthikRadhakrishnan вложенные циклы сделали то, что я хочу.

 comments.forEach((comment) => {
                    comment.isUserLiked = comment.usersLiked.some(id => id.equals(user_id))
                    comment.subcoms.forEach((subcomment) => {
                        subcomment.isUserLiked = subcomment.usersLiked.some(id => id.equals(user_id))
                    });
                });
0 голосов
/ 12 июля 2020

Здесь вы повторяете comments

comments.forEach((subcomment) => {
                //subcomment.subcoms is accessible
                subcomment.isUserLiked = subcomment.usersLiked.some(id => id.equals(user_id))
            });

//here first index of comments and array inside subcoms accessible

comments[0]['subcoms'].forEach((subcomment) => {
                subcomment.isUserLiked = subcomment.usersLiked.some(id => id.equals(user_id))
            });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...