React API 调用,使用 QuickBase 的新 RESTful API 渲染数据

问题描述

我正在尝试找出我在这里做错了什么......我已经有一段时间没有编码了,并试图跳回使用 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 了……我有这种感觉!

谢谢!

解决方法

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

,

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

data

例如,如果您将响应的 { "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",{ "id": 3,"label": "Record ID#","type": "recordid" } ] } 数组直接放入 data 状态,则在访问该数据时需要牢记响应的结构。如果我想从响应的第一条记录中获取 FID 3 的值,我需要使用 const [quickbaseData,setQuickbaseData] = useState(res.data);。对于大多数字段类型,quickbaseData[0]["3"].value 将是字符串或整数,但对于某些字段类型,它将是一个对象。您可以在 Field type details 中看到为每个字段类型返回值的方式。

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

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...