【问题标题】:Appending a property to each object in an array of objects将属性附加到对象数组中的每个对象
【发布时间】:2022-01-18 09:13:51
【问题描述】:

我正在使用 Node.js 和 Mongoose 访问 MongoDB 数据库并从 MongoDB 集合中返回一个对象数组。但是,我想为每个返回的对象附加一个属性。我的代码如下所示

router.get('/admin/manage_accounts/view_all', (req,res) => {
    Community_Member.find({}, (error, community_member) => {
        community_member.forEach(function(element){
            element.Role = "Community Member"
        })
        
        console.log(community_member)
        res.send(community_member)
     })
}

返回数据库中的对象,但 Role 属性未附加到任何对象,我不确定原因。谁能给我一点见解?

【问题讨论】:

  • 你对element["Role"] = "Community Member"有同样的问题吗?
  • 是的,不幸的是我这样做了。

标签: javascript node.js arrays express object


【解决方案1】:

标准的函数式方法是使用map

router.get('/admin/manage_accounts/view_all', (req,res) => {
    Community_Member.find({}, (error, community_member) => {
        community_member = community_member.map(element => {
            element.Role = "Community Member"
            return element
        })
        
        console.log(community_member)
        res.send(community_member)
     })
}

【讨论】:

  • 感谢您的回复。不幸的是,这不会产生所需的输出。 Role 属性仍未附加到每个对象。
【解决方案2】:

编辑单个 element 对象不会更新父数组中的元素。

您可以创建一个单独的数组并在其中添加具有新属性的对象:

router.get('/admin/manage_accounts/view_all', (req,res) => {
    Community_Member.find({}, (error, community_member) => {
        const result = [];
        community_member.forEach(function(element){
            result.push({
                ...element,
                Role: "Community Member"
            })
        })
        
        console.log(result)
        res.send(result)
     })
}

【讨论】:

    猜你喜欢
    • 2020-07-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-15
    • 2021-11-10
    • 1970-01-01
    • 1970-01-01
    • 2011-10-03
    相关资源
    最近更新 更多