【问题标题】:Fetch all the values of on attribute/field from an array of objects从对象数组中获取 on 属性/字段的所有值
【发布时间】:2020-09-17 15:13:18
【问题描述】:

我正在使用 Nodejs 和 MongoDB。这是我的数据:

[{Id:1234
Name:someone,
Email: someone@gmail.com},
{Id:4321
Name:john,
Email: john@gmail.com},
{Id:6789
Name:sarah,
Email: sarah@gmail.com}]

我想获取 name 字段的所有值并将其作为响应发送到前端。我尝试使用 find.project 和其他一些方法,但它一直返回一个空数组。

我是 Mongoose 和 Nodejs 的新手,所以我不确定应该如何完成。

【问题讨论】:

  • 至少要解决这个问题,并在发布到这里之前尝试解决它......人们通过提供正确的解决方案来帮助你,但你不要尝试那些并用类似的解决方案自己解决它之后,您使用已解决的更新编辑问题。如果您没有努力解决问题,请勿发布问题。

标签: node.js express mongoose


【解决方案1】:

试试这个:

 Model.find({}, {name: 1, _id: 0}, (error, data) => {
   if (!error) {
     // send data in your response.
   }
 });

注意:这里的 Model 是你的 mongoose db 模型。

【讨论】:

  • 感谢@Baptiste Wicht
【解决方案2】:

在 GET 路由中使用以下代码查询集合,

Collection.find({})
       .then(users=>{      // users variable stores all records fetched from the database 
           res.render("usersHTML",{users});    // "usersHTML" is the ejs file
       })                                      // users data are passed to the ejs file 
       .catch(err=>{console.log(err)});

现在将用户记录传递到前端,只需使用循环遍历用户并使用users[i].name 获取每条记录的名称。

【讨论】:

  • 我想在服务器/后端而不是前端过滤数据。
  • 好的,所以创建一个数组。然后使用 for 循环遍历“用户”并将所有名称插入创建的数组并将数组传递给前端简单。
  • 我可以在这里使用 arr.filter 吗?我知道我们可以使用它,但不知道如何使用它
  • 你想要名称的所有值,所以为什么要使用过滤器。您可以使用普通的 for 循环,那么为什么要使用内置函数。
猜你喜欢
  • 2018-11-14
  • 1970-01-01
  • 2017-01-07
  • 1970-01-01
  • 2015-04-05
  • 1970-01-01
  • 1970-01-01
  • 2018-12-05
  • 2019-08-12
相关资源
最近更新 更多