← 返回文章流

解决林木木老师哔哔广场中同一Memos实例下多用户头像昵称显示错误问题

问题描述 非常感谢 林木木 老师编写的 哔哔广场 ,日常用于调取Memos网站的内容,并实现了同步订阅其他Memos用户及发表 memos 等功能。 但是,我这里有一个较为小众的需求,就是在使用 Memos 广场功能时,如下图界面: 当多个用户来自同一个 Memos 实例时,其动态内容能够正常显示,但用户信息(头像和昵称)却全部显示为同一个用户的信息。 例如,在我的订阅列表中: 小十 (ID: 1, 头像: avatar.png) 泥鳅胡子 (ID: 3, 头像: myh.jpg) 上述两个用户都使用同一个 Memos 实例 https://memos.xiaoten.com,但在广场模式下,所有动态都显示为泥鳅胡子的头像和昵称,即使这些动态实际上是小十发布的。 原因分析 主要原因 用户信息映射逻辑未覆盖这种特殊情况,在原始的代码实现中: 获取用户动态时,代码使用了同一个 Memos 实例下的第一个用户信息来覆盖所有用户的动态信息。 最初使用 creatorName 作为映射键,但当多个用户有相同的显示名时会导致冲突。 在合并用户信息和动态数据时,属性覆盖的顺序问题,会使用户信息被动态数据中的空值覆盖。 技术细节 在 Promise 内部处理动态数据时,原始代码使用了 matchedMemo 而不是当前用户 u 的信息: // 原因 for (let key in matchedMemo) { if (matchedMemo.hasOwnProperty(key)) { item[key] = matchedMemo[key]; } } 剩余 1 行代码 展开剩余代码 这会使同一个 Memos 实例下的所有用户都使用了第一个匹配的用户信息。 解决方式 1. 修改 Promise 内部的用户信息赋值 在获取每个用户的动态时,使用当前用户 u 的信息而不是 matchedMemo:

来自 小十的个人博客作者主页
在原博客阅读全文 (新标签页打开)

以上内容来自博客订阅源,版权归原作者。关注作者后可以在 关注列表 第一时间查看作者文章。

一起聊聊 0

尊重不同观点

还没有评论。欢迎分享第一个想法。

RSS SUBSCRIPTIONS

选择 RSS 订阅

把博客汇的文章添加到你常用的阅读器。

关注文章 RSS 订阅本订阅需要登录后使用