前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >mongoose根据关键字模糊查询(包括前端模糊查询)

mongoose根据关键字模糊查询(包括前端模糊查询)

作者头像
biaoblog.cn 个人博客
发布于 2022-08-11 10:51:44
发布于 2022-08-11 10:51:44
2.8K00
代码可运行
举报
运行总次数:0
代码可运行

后端:

使用new RegExp()实例对象

eg:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
const Schema = mongoose.model("modelName")
let reg = new RegExp("查询关键词")
awati Schema.fine || where(say:reg).exec().then(res=>{
成功回调})
.catch(err=>{
失败回调
})

前端:

eg:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
var arr = ['草莓','苹果']
newArr = []
for(var i = 0;i<arr.length;i++){
if(arr[i].indexOf('草')>=0){
newArr.push(arr[i])
}
console.log(newArr) //// [草莓]
}

前端映射添加接口字段

两种方法es5通过indexOf(),es6通过map()、...拓展运算符等

// 接口数据

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
var resObj = [{id:1},{id:0},{id:2}]
// 自己定义数组
selfObj = [
{id:0,name:'灯'},
{id:1,name:'无线开关'},
{id:2,name:'空调'},
]
resArr = []
selfArr = []

//期望:给接口数据添加name字段 需要跟自己定义的数组id 对应起来

//例如:接口数据 id为0的的对象 添加name为灯

// id为1的的对象 添加name为无线开关

es5

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
resObj.forEach(function(e){resArr.push(e.id)})
selfObj.forEach(function(e){selfArr.push(e.id)})
console.log(resArr)
for(var i =0;i<selfArr.length;i++){
//遍历出自定义数组每一个id 在接口 id 数组中的位置
// 接口id.indexOf(每一个数组Id) 返回每一个自定义数组id在接口数组id中的位置
//然后通过这个的位置 去给接口数组添加name字段 添加的内容为:这个位置下自定义数组的name
var index = resArr.indexOf(selfArr[i])
//添加字段
resObj[i].name = selfObj[index].name
}
console.log(resObj)

es6

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
//方案2 通过自定义数组 映射新的对象 id为key name为值
var newObj = {};
selfObj.forEach( item => { newObj[item.id] = item.name})
console.log(newObj)
// 一个是空箭头函数,一个是箭头函数返回一个空对象
// 返回一个空对象:map(ele=>({}))
// 空的箭头函数: map(ele=>{})
// 方式1
resObj = resObj.map(ele =>({...ele,name:newObj[ele.id]}))
// 方式2
resObj = resObj.map(ele=>{return {...ele,name:newObj[ele.id]}})
// 两种方式结果是一样的
console.log(resObj)
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
高级前端常考手写面试题合集5
方法有很多种,这里提供一种比较简洁的写法,用到了ES10的Object.fromEntries():
helloworld1024
2023/01/09
4950
腾讯前端二面高频手写面试题总结
上图就很好的解释了 LRU 算法在干嘛了,其实非常简单,无非就是我们往内存里面添加或者删除元素的时候,遵循最近最少使用原则
helloworld1024
2023/01/05
7420
前端手写面试题合集
String.prototype.padStart 和 String.prototype.padEnd是ES8中新增的方法,允许将空字符串或其他字符串添加到原始字符串的开头或结尾。我们先看下使用语法:
helloworld1024
2022/12/07
3520
前端面试被问到的js手写面试题汇总
类的继承在几年前是重点内容,有n种继承方式各有优劣,es6普及后越来越不重要,那么多种写法有点『回字有四样写法』的意思,如果还想深入理解的去看红宝书即可,我们目前只实现一种最理想的继承方式。
helloworld1024
2022/11/18
5710
10个常见的前端手写功能,你全都会吗?
万丈高楼平地起,地基打的牢,才能永远立于不败之地。今天给大家带来的是10个常见的 JavaScript 手写功能,重要的地方已添加注释。有的是借鉴别人的,有的是自己写的,如有不正确的地方,欢迎多多指正。
猿来是前端
2022/09/19
2960
手撕常见JS面试题
高阶函数实现AOP(面向切面编程) Function.prototype.before = function (beforefn) { let _self = this; // 缓存原函数的引用 returnfunction () { // 代理函数 beforefn.apply(this, arguments); // 执行前置函数 return _self.apply(this, arguments); // 执行原函数
helloworld1024
2022/10/14
5320
「面试」45 道牛客网 JavaScript 经典题总结(8500字)
牛客网的45道JS能力评测题个人觉得是非常好的45道js基础检测题,基本就是对自己的JavaScript基础做一个比较全面的评估,包括if语句、循环体、基础操作符、setInterval、setTimeout、流程控制、常用数组方法及es6相关(解构、Map、Set、...等)。之前我已经做过一遍了,我记得以前牛客网不支持es6的写法,这两天花了点时间把所有题目又做了一遍,发现支持es6了。这次每个题目我都尽力用了不同的方法实现,建议各位看官收藏,需要的时候方便查看。当然如果你有更好更新颖的实现方法,欢迎评论区留言交流。
coder_koala
2020/07/15
1.1K0
「面试」45 道牛客网 JavaScript 经典题总结(8500字)
10个常见的前端手写功能,你全都会吗?
万丈高楼平地起,地基打的牢,才能永远立于不败之地。今天给大家带来的是10个常见的 JavaScript 手写功能,重要的地方已添加注释。有的是借鉴别人的,有的是自己写的,如有不正确的地方,欢迎多多指正。
CRMEB商城源码
2022/07/20
3620
常见的数组基本用法
ES5方法:pop push shift unshift reverse sort splice
前端迷
2021/04/09
9260
前端一些需要掌握的简单知识点
原生javaScript是中大公司挑人的核心,也是决定你未来发展高度的核心。 冒泡排序,快速排序,深度克隆,深度冻结,数组操作,本章都有。 走遍大江南北,还是原生javaScript最美 感冒给大家更新,希望大家多多点赞,谢谢! 下面是本人一些其他文章和学习的文档 , 全栈工程师一起加油! Node.js之快速搭建微信公众号服务器 Node.js之快速搭建服务器+前后端数据库session交互 ES6教程全篇 你该拥抱的TypeScript 快速排序算法 '这应该是最简单的快速排序实现,什么是快速排序呢?'
Peter谭金杰
2019/08/02
1.1K0
重温前端-js篇
instanceof运算符用来判断一个构造函数的prototype属性所指向的对象是否存在另外一个要检测对象的原型链上
kif
2023/03/10
5.4K0
前端常见手写面试题(持续更新中)
观察者需要放到被观察者中,被观察者的状态变化需要通知观察者 我变化了 内部也是基于发布订阅模式,收集观察者,状态变化后要主动通知观察者
helloworld1024
2022/10/26
6640
前端知识点总结js篇(中)
(总结不够全面,建议参考es6.ruanyifeng.com/#docs/promi…
zhouzhouya
2023/10/26
2440
前端知识点总结js篇(中)
常用utils
数组最大最小值 function min(nums) { var res = nums[0] for (var i = 0; i < nums.length; i++) { if (res > nums[i]) { res = nums[i] } } return res } function max(nums) { var res = nums[0] for (var i = 0; i < nums.l
hss
2022/02/25
2530
记一次京东前端面试被问到的题目
浅拷贝是指,一个新的对象对原始对象的属性值进行精确地拷贝,如果拷贝的是基本数据类型,拷贝的就是基本数据类型的值,如果是引用数据类型,拷贝的就是内存地址。如果其中一个对象的引用内存地址发生改变,另一个对象也会发生变化。
helloworld1024
2022/11/15
4240
js 循环
(1)基本数据类型 不改变const array = [1, 2, 3, 4];
用户4793865
2023/01/12
7.9K0
JavaScript专题(二)数组去重,会就要会的理直气壮
如果数组中有NaN,你又正好需要判断数组是否有存在NaN,这时你使用indexOf是无法判断的,你必须使用includes这个方法。
全栈程序员站长
2022/07/04
3920
【翻译】JavaScript中5个值得被广泛使用的数组方法
原文地址:http://colintoh.com/blog/5-array-methods-that-you-should-use-today?utm_source=javascriptweekly&
寒月十八
2018/01/30
1.1K0
最全 JavaScript Array 方法 详解
我们在日常开发中,与接口打交道最多了,前端通过访问后端接口,然后将接口数据二次处理渲染到页面当中。 二次处理的过程是 考验 Coder 对 Array 是否熟练 以及 在 何种 场景下使用哪种方法处理最优 。 小编,在最近开发中就遇到了 Array 问题, 在处理复杂的业务需求时,没想到Array 有类似的方法,然后将方法 组合起来解决当下问题。
程序员海军
2021/10/11
1.1K0
最全 JavaScript Array 方法 详解
ES6- Set-2之去重—并集—交集—差集
刚才是在常规的情况下,但是数组中出现了对象,这个去重可能就跪了 我们来看一下
envoke
2020/09/17
8330
ES6- Set-2之去重—并集—交集—差集
相关推荐
高级前端常考手写面试题合集5
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文