如何用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
相关产品推荐
相关产品推荐

