You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Axios从数组获取用户邮箱?Mongoose关联查询问题

问题:从关联用户ID数组中获取并展示用户邮箱

一、数据库Schema定义

User表

new mongoose.Schema({
    name: String,
    email: String,
    password: String,
})

Itinerary表

mongoose.Schema(
    {
      name: String, 
      usersId: [{
        type: mongoose.Schema.Types.ObjectId,
        ref: "user" // 一对多关联
      }]
    },
)

Itinerary表的usersId字段存储多个分配给该行程的用户ID,需求是在前端展示这些用户的邮箱地址。

二、前端React代码

const [usersName, setUsersName] = useState([]);
const iti = React.useContext<any[]>(ItineraryContext);
useEffect(() => {
    iti.map((dataObj) =>
      dataObj.usersId.map((item: any) => {
        return axios
          .get(`http://localhost:8080/api/auth/allusersId/${item}`)
          .then((res) => {
            setUsersName(res.data.email);
            console.log(res.data);
          })
          .catch((err) => {
            console.log(err);
          });
      })
    );
}, [iti]);

当前问题:GET请求出现错误,无法正确从数组中提取数据。

三、后端控制器代码

exports.findUsersById = (req, res) => {
  User.find({
     id: [req.params.id]
    }, 'email', (err, user) => {
      
    if (err) {
      res.status(500).send({ message: err });
      return;
    }

    if (!user) {
      return res.status(404).send({ message: 'User Not found.' });
    }

    res.status(200).send({
      email: [user.email]
    });
  });
};

更新记录

  • 更新1:请求能正常触发,但console.log(res.data)始终返回undefined,浏览器Network面板显示已获取到ID,怀疑后端数据返回格式有问题。
  • 更新2:将控制器中的.find改为.findOne后,仅能返回第一个用户的邮箱。

内容的提问来源于stack exchange,提问作者prettyMaria

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.18 09:12:59