【问题标题】:It is too slow to update the like attribute to algolia db, how do I speed it up?将like属性更新到algolia db太慢了,如何加快速度?
【发布时间】:2019-11-24 23:21:36
【问题描述】:

我的索引的每个命中都有一个名为 like 的属性。每当我点击赞按钮时,我都必须等待很长时间,直到一切就绪。有什么方法可以加快这个过程吗?

我已经尝试过等待三个步骤。首先,我将使用 getObject 获取对象。其次,我会做 partialUpdate 来更新 likes attr。最后,我将使用 waitTask 等待,直到一切都安定下来。

router.patch("/likes/:id", auth.required, async (req, res) => {
  const increment = req.body.liked ? -1 : 1;

  try {
    const content = await index.getObject(req.params.id, ["likes"]);

    //Because the aync feature of algolia
    //We have to waittask for its update to keep consistency
    await index.partialUpdateObject(
      {
        likes: content.likes + increment,
        objectID: req.params.id
      },
      (err, { taskID } = {}) => {
        index.waitTask(taskID, err => {
          if (!err) {
            return res.json({ message: "updated" });
          }
        });
      }
    );
  } catch (error) {
    return res.json({ message: error.message });
  }
});

我想加快这个过程。任何帮助将不胜感激。

【问题讨论】:

    标签: reactjs backend algolia instantsearch.js


    【解决方案1】:

    这基本上是响应从后端返回的等待时间。 该工作可能需要从后端完成以减少请求->响应时间。

    如果你只从前端控制这个问题,有一种方法可以使用,它目前被 Facebook 等大公司使用,例如 UX。

    理论上:

    • 用户点击了“赞”按钮。
    • 您更新了喜欢按钮,因为它已经被喜欢了!
    • 您发送请求以在数据库中执行类似操作以保存它。
    • 响应返回两个可能的结果:

      1. 成功:因此,没有更多工作要做。

      2. 失败:你删除点赞,弹出消息什么的,告诉用户发生了错误,他可能会重试什么的。

    我希望提供这种方法可以帮助您解决这个问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-09-09
      • 2012-03-07
      • 1970-01-01
      • 2015-07-17
      相关资源
      最近更新 更多