首页 > 解决方案 > NodeJs SDK 中的 Couchbase 子文档更新

问题描述

我想将电话号码对象添加到我的个人文档中,它将它们保存在一个数组中。到目前为止一切顺利,我将新的电话文档添加到数组中没有问题。如果我想通过 subdoc 更新数组中的文档,这有点棘手,我需要知道数组中的索引,这就是我的担忧。Couchbase 允许用户追加、预先结束到数组中。因此,即使这样,当我最初检索数组时,我也可以获得数组索引,但有人可能会将新元素推入数组中,这可能会改变索引。所以这需要在我更新或删除任何数组对象之前使用 CAS。那么有没有办法克服所有这些限制并且仍然避免多次往返。

这是我的文档的样子

{
  "type": "Lead",
  "person": [
    {
      "id": 1,
      "first_name": "Tom",
      "middle_name": "M",
      "last_name": "Miller",
      "title": "Dr.",
      "suffix": "II",
      "gender": "m",
      "dob": "07/12/1978",
      "email": [
        {
          "id": 1,
          "email_address": "tom@email.com",
          "default": "yes"
        },
        {
          "id": 2,
          "email_address": "tom@email.com"
        }
      ],
      "phone": [
        {
          "id": 1,
          "country": "+1",
          "phone_number": 2135551212,
          "ext": "",
          "type": "mobile",
          "sms": "yes",
          "default": "yes"
        },
        {
          "id": 2,
          "country": "+1",
          "phone_number": 2135554444,
          "ext": 455,
          "type": "office",
          "sms": "no"
        }
      ]
    }
  ],
  "home_address": {
    "street_address": "28812 Miller Ave",
    "city": "Los Angeles",
    "state": "CA",
    "zip": 90017,
    "country": "US"
  },
  "search_info": {
    "min_beds": 3,
    "min_bath": 2.5,
    "min_garage": 2,
    "garage_type": "any",
    "pool": "yes",
    "min_sqft": 2500,
    "max_sqft": 3500,
    "min_lot_size": 10000,
    "max_lot_size": 15000,
    "max_storey": 1,
    "notes": "Wants a fixer upper"
  }
}

标签: node.jscouchbase

解决方案


推荐阅读