Skip to content
Advertisement

How to access data inside double square brackets in NodeJS

I need to access comment from posts array and based on the comment id I have to update the comment status. I can see the format of comment inside posts array as below:

{ id: ‘5fdcd812’,
title: ‘post1’,
comment: [ [ ‘c903c4dc’, ‘commentcontent’, ‘pending’ ] ] }

Since comment is having two ‘[‘ brackets when I search for comment.id it is showing as undefined.

So please help me here, how can I access the comment Id

Here is my code snippet:

app.post('/events',(req,res)=>{
    const {type,data} = req.body;

    if(type === 'postCreated'){
        const {id,title} = data;

        posts[id] = {id,title,comment:[]}
    }
    
    if(type === 'CommentCreated'){
        
        const {id,content,postId,status} = data;
        const post = posts[postId];
        post.comment.push([id,content,status]);
}

if(type === 'CommentUpdated'){
        
    const {id,content,postId,status} = data;
    
    const post = posts[postId];
    
    const comments = post.comment.find(comm=>{
        return comm.id===id
        });
    console.log(comments);

    comments.status = status;
    comments.content = content;
}
res.send({});
})

Advertisement

Answer

Instead of nested arrays

post.comment.push([ id, content, status]);

it might make more sense to add that data as an object

post.comment.push({ id, content, status });

That way you could access the comments by their keys rather than array indexes. Which looks like what you’re trying to do.

const data = {
  id: '5fdcd812',
  title: 'post1',
  comments: [
    { id: 'c903c4da', content: 'commentcontent', status: 'success' },
    { id: 'c903c4dc', content: 'commentcontent', status: 'pending' }
  ]
};

const id = 'c903c4da';
const comment = data.comments.find(comment => comment.id === id);
console.log(comment);
Advertisement