如何在react-admin中使用getOne传递额外的数据?

问题描述

我对react-admin的dataProvider有问题。我做了一个自定义提供程序:

const dataProvider = {
    getList: async (resource,options) => {
      const mapping = (item) => {
        return {
          id          : item.data.sid,published_at: new Date(item.data.created),}
      }
      const load = async (data) => {
        const getData = async (transcript) => {
          return {
            data: transcript,};
        };
        const transcripts = async () => {
          const params = {
            limit: 50,offset: 0,searchText: options.filter.q,}
          return (await axios.get(
            `https://${apiUrl}/v1/transcripts`,{ params,headers }
          )).data;
        };
        const promises = (await transcripts()).map((transcript) =>
          getData(transcript)
        );
        return Promise.all(promises);
      };
      const list = await load()
      .then(res => res)
      const sortedList = list.map(mapping);
      return {
        data    : sortedList,total   : 10,}
    },getone: async (resource,options) => {
      const rawSummary = (await axios.get(`https://${apiUrl}/v1/transcripts/${options.id}.summary`)).data;
      const rawTranscript = (await axios.get(`https://${apiUrl}/v1/transcripts/${options.id}.nlp`)).data;
      const data = {
        transcript: rawTranscript,summary   : rawSummary,}
      return {
        data: data,};
    }
}

getList正常工作。我得到的数据如下:

[
    {
        data: {
            created: "2020-08-14T12:00:03.551Z",sid: "0dda80a33135bb73bd39d28be5176fe1d71fcf05",transcript: {
                created: "2020-08-14T12:00:03.551Z",updated: "2020-08-14T12:00:03.551Z",size: "2400848",},{
        data: {
            created: "2020-08-13T13:45:03.225Z",sid: "b62fd4837a965c23bb3403f32a50e6e9a1c193c7",transcript: {
                created: "2020-08-13T13:45:03.225Z",updated: "2020-08-13T13:45:03.225Z",size: "12690"
            },...
]

但是,如果我通过某个记录,我希望获得额外的“成绩单”和“摘要”,但是日志只返回包含以下内容的记录:

{
    id: "54710bd652f6901496091e440db976451f400529",published_at: Sun Aug 16 2020 12:10:02 GMT+0300,}

能否请您提示如何添加额外的数据?我将摘要和抄本请求作为属性添加到getList的对象,但是文档的大小超过2 Mb,因此加载花费了很多时间。

预先感谢您的帮助!

解决方法

最后,问题出在表面上。我只是忘了在要返回的数据上添加“ id”:

getOne: async (resource,options) => {
  const rawSummary = (await axios.get(`https://${apiUrl}/v1/transcripts/${options.id}.summary`)).data;
  const rawTranscript = (await axios.get(`https://${apiUrl}/v1/transcripts/${options.id}.nlp`)).data;
  const data = {
    transcript: rawTranscript,summary   : rawSummary,}
  return {
    data: {
      id : options.id,...data,},};
}