在MERN项目中如何通过React与Node从MongoDB仅获取email等指定字段数据
解决方案
要实现仅拉取MongoDB中的指定字段,有两种实现方案,优先选择后端改造的方式降低传输开销:
方案1:后端接口限制返回字段(推荐)
在后端对应/getuser接口的查询逻辑中,通过MongoDB的投影机制指定仅返回需要的字段:
- 若使用Mongoose ODM,将原查询代码修改为如下格式:
// 第二个参数为投影配置,1表示返回该字段,0表示不返回,_id默认返回需手动关闭 User.find({}, { email: 1, phone: 1, _id: 0 })
- 若使用原生MongoDB驱动,写法如下:
db.collection('users').find({}, { projection: { email: 1, phone: 1, _id: 0 } })
改造完成后接口只会返回你需要的email、phone字段,前端无需修改原有代码即可生效。
方案2:前端过滤全量数据
如果暂时无法修改后端代码,可以在前端拿到全量数据后手动过滤仅保留需要的字段,修改你Admin.js中的hello方法即可:
hello = () => { axios.get('/getuser') .then((response) => { // 遍历返回数据仅保留需要的字段 const filteredData = response.data.map(item => ({ email: item.email, phone: item.phone })) this.setState({ posts: filteredData }); console.log(filteredData); }) .catch(() => { alert('Error retrieving data!!!'); }); }
修改完成后,state中存储的就只有你需要的指定字段数据,渲染时也不会出现多余内容。
内容的提问来源于stack exchange,提问作者user14110207
相关产品推荐
相关产品推荐

