如何在 kuzzle 中的现有数组中添加或删除元素

How to append or remove an element from an existing array in kuzzle

让我们想象一下这种情况 Alice 和 Bob 连接到同一个 kuzzle 服务器。 有一个文档结构如下:

{
  "nom": "Festival de l'automne",
  "participants": [id1, id2, ...]
}

爱丽丝和鲍勃想几乎同时更新文档。 如果使用 kuzzle.document.update() 我必须使用以前存储在 Alice 或 Bob 的客户端上的值来更新参与者数组。这可能会导致冲突或数据丢失。

我的问题是有没有办法使用以前的服务器端值更新“参与者”数组?或者有没有办法直接使用 elasticsearch 查询来使用

这样的用户脚本
{
  "script" : "ctx._source.participants += participants",
  "params" : {
    "participants" : "idx"
  }
}

出于安全原因,Kuzzle 不会公开 Elasticsearch 脚本功能(特权升级和可能 DOS 服务器的繁重脚本)。

您应该公开一个特定的 API 操作以自动将新值附加到数组。此 API 操作应使用 Integrated Elasticsearch Client 使用无痛脚本。

您可以在 documentation

中找到有关如何处理数组的更多信息