rethinkdb, как я могу получить результат по значению в частности "индекс массива"? - PullRequest
1 голос
/ 27 марта 2019

пример данных

[
  {
    "createdDate": 1508588333821,
    "data": {
      "image_extension": "png",
      "name": "Golden",
      "qty": 1,
      "remark": "#296-2",
      "status": "RETURN",
      "owner": [
        {
          "name": "app1emaker",
          "location": 1
        },
        {
          "name": "simss92_lmao",
          "location": 31
        }        
      ]
    },
    "deleted": false,
    "docId": 307,
    "docType": "product",
    "id": "db0131f9-9359-4aa3-b6ed-cd9f3ff4aa3e",
    "updatedDate": 1553155281691
  },
  {
    "createdDate": 1508588333324,
    "data": {
      "image_extension": "png",
      "name": "Golden",
      "qty": 1,
      "remark": "#296-2",
      "status": "DISCARD",
      "owner": [
        {
          "name": "At533",
          "location": 7
        },
        {
          "name": "madsimon",
          "location": 64
        },
        {
          "name": "boyboy96",
          "location": 1
        },
        {
          "name": "xinfengCN",
          "location": 5
        }
      ]
    },
    "deleted": false,
    "docId": 308,
    "docType": "product",
    "id": "3790bdaa-5347-4ab0-8149-37332c23c6ea",
    "updatedDate": 1554555231691
  },
  ...
  ...
]

И сказал, что я хотел бы выбрать data.owner только для индекса массива 0 (или я должен сказать data.owner [0])

{
  "name": "app1emaker",
  "location": 1
}

и

{
  "name": "At533",
  "location": 7
}

в данном случае.У меня есть код ошибки ниже.

r.db('carbon').table("items").pluck(['id', 'docId', 'createdDate',{data:{name: true, owner:[0]}}])

Я видел, что для некоторых функций, таких как orderBy, rethinkdb позволяет использовать orderBy (r.row ('data') ('owner') (0) ('name)')) для доступа к вложенному объекту, но я понятия не имею, как это сделать для pluck?Кто-нибудь может дать мне несколько советов?Большое спасибо

1 Ответ

2 голосов
/ 27 марта 2019

pluck не может этого сделать, но вы можете использовать карту :

r.db("carbon").table("items").map(function(doc){
  return {
    "id": doc("id"), 
    "docId": doc("docId"),
    "createdDate": doc("createdDate"),
    "data": {
      "name": doc("data")("name"),
      "owner": doc("data")("owner")(0)
    }
  }
})
...