如何使用axios查询API或数据库,获取_ref值不重复的对应title数据
实现方案说明
首先axios本身只是HTTP请求工具,不直接具备数据筛选逻辑,你可以根据场景选择前端处理或者后端处理两种方案实现需求:
方案1:前端处理(适合数据量较小的场景)
你之前的params: {_ref: != _ref}写法不符合语法规范,axios的params仅用于向接口传递查询参数,没有内置筛选逻辑。你可以先拉取全量数据,再在前端做去重处理,代码示例如下:
return await axios .get('http://localhost/api') .then(response => { const rawData = response.data const refSet = new Set() const result = [] rawData.forEach(item => { if (!refSet.has(item._ref)) { refSet.add(item._ref) result.push(item.title) } }) EventRegister.emit('MongoDb_Data', rawData); // 返回的result就是你需要的去重后的title数组 return result }) .catch(err => { console.log(err); });
返回的result输出即为:
First Title Third Title
方案2:后端处理(适合数据量较大的场景,性能更优)
你用的是MongoDB数据库,可以直接在后端接口层通过聚合查询实现去重,不需要前端额外处理,Mongo查询参考语句如下:
// 你的数据库集合查询逻辑 db.yourCollectionName.aggregate([ { $group: { _id: "$_ref", // 相同_ref下取第一条记录的title即可 title: { $first: "$title" } } }, { $project: { _id: 0, title: 1 } } ])
后端接口直接返回上述查询结果后,前端axios请求可以直接拿到去重后的title列表,不用额外处理。
内容的提问来源于stack exchange,提问作者Jerry Seigle
相关产品推荐
相关产品推荐

