0

我试图找出我在这里做错了什么......我已经有一段时间没有编码并试图跳回使用 QuickBase 的 RESTful API 的外部应用程序。我只是想从 QuickBase 获取数据以在外部应用程序中使用以创建图表/图形。

我无法使用 GET,因为它只给我字段名称而没有数据,如果我使用 POST,那么我也会得到这些字段的值。我能够获取控制台中呈现的所有数据,但我正在努力让每个字段呈现以在应用程序中使用。

let headers = {
  'QB-Realm-Hostname': 'XXXXXXXXXXXXX.quickbase.com',
  'User-Agent': 'FileService_Integration_V2.1',
  'Authorization': 'QB-USER-TOKEN XXXXXX_XXXXX_XXXXXXXXXXXXXXXX',
  'Content-Type': 'application/json'
}
let body = {"from":"bpz99ram7","select":[3,6,80,81,82,83,86,84,88,89,90,91,92,93,94,95,96,97,98,99,101,103,104,105,106,107,109,111,113,115,120,123,224,225,226,227,228,229,230,231,477,479,480,481],"sortBy":[{"fieldId":6,"order":"ASC"}],"groupBy":[{"fieldId":40,"grouping":"equal-values"}],"options":{"skip":0,"top":0,"compareWithAppLocalTime":false}}

fetch('https://api.quickbase.com/v1/records/query',
  {
    method: 'POST',
    headers: headers,
    body: JSON.stringify(body)
  })
  
.then(res => {
  if (res.ok) {
    return res.json().then(res => console.log(res));
  }

return res.json().then(resBody => Promise.reject({status: res.status, ...resBody}));
})

.catch(err => console.log(err))

希望得到一些帮助,让渲染的数据在 React 中使用,以及任何在他们的领域中使用 QuickBase 的新 API 调用的人的任何提示!如果这是一个简单的问题/问题,我很抱歉,已经有几年没有使用 React 了……我感觉到了!

谢谢!

4

2 回答 2

0

在 Quickbase 方面,没有“SELECT *”等价物,因此要获取您不知道架构(或经常更改)的表的所有字段的数据,您可以在字段上运行 GET端点:https ://developer.quickbase.com/operation/getFields然后使用响应中的字段 ID 对 /records/query 进行 POST 调用

于 2021-04-23T12:37:34.927 回答
0

Quickbase 对该调用的成功响应具有一个属性,该属性data是返回的记录数组。该数组的每个元素都是一个对象,其中返回的每个字段的 FID 是嵌套对象的键 - 或某些字段类型的对象 - 具有字段的值。这是一个非常人为的例子:

{
  "data": [
    {
      "1": {
        "value": "2020-10-24T23:22:39Z"
      },
      "2": {
        "value": "2020-10-24T23:22:39Z"
      },
      "3": {
        "value": 2643415
      }
    }
  ],
  "fields": [
    {
      "id": 1,
      "label": "Date Created",
      "type": "timestamp"
    },
    {
      "id": 2,
      "label": "Date Modified",
      "type": "timestamp"
    },
    {
      "id": 3,
      "label": "Record ID#",
      "type": "recordid"
    }
  ]
}

例如,如果您将data响应数组直接置于状态中const [quickbaseData, setQuickbaseData] = useState(res.data);,则在访问该数据时需要牢记响应的结构。如果我想从响应中的第一条记录中获取 FID 3 的值,我需要使用quickbaseData[0]["3"].value. 对于大多数字段类型value将是字符串或整数,但对于某些字段类型将是对象。您可以在Field type details中查看为每个字段类型返回值的方式。

根据您的需要,您可能会考虑将 Quickbase 响应处理为一个新的、更简单的数组/对象,以便在您的应用程序中使用。如果返回的值需要额外的处理,例如转换为 Date() 对象,这将特别有用。这也将允许您使您的应用程序 API 不可知,因为除了最初处理来自 Quickbase 的响应之外,您的应用程序的其余部分不必了解 Quickbase 如何返回查询的数据。

于 2021-04-23T14:15:05.013 回答