这一周主要学习如下:
Vue
在使用ElementUI的时候有一个el-select标签,我们有一个需求就是需要在下拉列表的时候还需要过滤出特定的选项,但是ElementUI官方默认的过滤却只能支持 label 的筛选,所以这个时候就需要重新filter-method方法来过滤出所需要的选项。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64
| <template> <div> <el-form v-model="selectData"> <el-select v-model="selectData.value" placeholder="请选择" filterable :filter-method="search" prop="value"> <el-option v-for="item in options" :key="item.value" :label="item.label" :value="item.value"> <span style="float: left">{{ item.label }}</span> <span style="float: right; font-size: 15px">{{ item.value }}</span> </el-option> </el-select> </el-form> </div> </template> <script> export default { data () { return { options: [{ value: '选项1', label: '黄金糕' }, { value: '选项2', label: '双皮奶' }, { value: '选项3', label: '蚵仔煎' }, { value: '选项4', label: '龙须面' }, { value: '选项5', label: '北京烤鸭' }], selectData: { value: '' } }; }, methods: { search (val) { let copyObj2 = JSON.parse(JSON.stringify(this.options)); if (val != null && val !== '') { this.options = copyObj2.filter((item) => { if (item.value.indexOf(val) > -1) { debugger; return true; } else { return false; } }); } else { this.options = copyObj2; } } } }; </script> <style>
</style>
|
但是后来又说要把选择的值给另一个字段…于是我就在search方法下面加了一行this.otherField = val。。后来前端把那一行给去除了。。。然后修改为如下代码。
1 2 3 4 5 6
| <el-select v-model="selectData.value" placeholder="请选择" filterable :filter-method="(val)=>search(val,()=>{this.otherField=val})" prop="value"> search (val, callback) { callback(); // 一样的代码 }
|
后来就没管了,不过现在觉得这样写的话有好处也有坏处。好处就是对于如果只有很少的字段变动的话,这样改无疑的好的,因为可以避免在方法里面写太多的字段,但是一旦重复的多起来,我觉得在方法里面写起来比较好。
ElasticSearch的乐观锁机制(同步的坑)
上周由于在做补偿机制的时候,需要对Es一些数据进行频繁的更新,但是在测试的时候 ES 经常会返回version conflict ,后来搜索了一下,发现 ES 对于每一个数据都有一个_version字段

而我们对一个数据如果频繁更新的话,就会导致ES的乐观锁生效,从而更新失败。如下:

由于我使用的ES版本是ES6.7.1,这时候只能通过if_seq_no来解决了,因为当我尝试使用外部版本号控制的时候,突然发现。。。ES官方竟然不推荐了

这部分后续写文章继续分析了。。。
ES的升级以及基础排序方法
由于需要列表的数据进行综合查询然后排序,这个时候就只能手写排序方法了,好在ES的官方文档倒也详细,所以参照官方的文档,自己摸索了两个小时倒也写出来了。
1 2 3 4 5
| String script = "你的排序脚本"; Script inline = new Script(script); SearchRequest searchRequest = new SearchRequest("你的索引"); SearchSourceBuilder sourceBuilder = new SearchSourceBuilder(); sourceBuilder.sort(new ScriptSortBuilder(inline,ScriptSortBuilder.ScriptSortType.NUMBER).order(SortOrder.DESC));
|
Rabbitmq
由于Mq环境需要统一下,所以这段时间也把自己负责的Mq又fanout改为direct了。改动起来到也没啥难度,就是在convertAndSend方法里面多加了一个routeKey参数而已
算法
这周主要是在 Leetcode 上写了点Array的一些算法题,因为都是简单的题目,暂时还未遇到一些比较经典的题目
总结
周三才想起来试试记录下,下周估计会详细点