首页 > 解决方案 > 无法使用自定义 restClient 将 id 替换为 _id。解析错误:意外的令牌

问题描述

我正在尝试更改 restClient 以支持 mongoDB(将 id 替换为 _id)。

这是文档https://marmelab.com/admin-on-rest/FAQ.html#can-i-have-custom-identifiers-primary-keys-for-my-resources。我尝试了不同的变体,但这个变体显示“意外令牌”

这是错误截图

const convertHTTPResponseToREST = (response, type, resource, params) => {
        const { headers, json } = response;
        switch (type) {
            case GET_LIST:
                return {
                    data: json.map(resource => { ...resource, id: resource._id } ), // here an error with "...resource"
                    total: parseInt(headers.get('content-range').split('/').pop(), 10),
                };
            case UPDATE:
            case DELETE:
            case GET_ONE:
                return { ...json, id: json._id };
            case CREATE:
                return { ...params.data, id: json._id };
            default:
                return json;
        }
    };


 <Admin
         title="Dashboard"
         restClient={convertHTTPResponseToREST('/api')}>
 </Admin>

当我使用 jsonServerRestClient() 时,它可以工作。也许还有其他方法可以将 id 更改为 _id?

标签: reactjsadmin-on-rest

解决方案


编辑答案:

您需要更换:

data: json.map(resource => { ...resource, id: resource._id }),

经过

data: json.map(resource => ({ ...resource, id: resource._id })),

注意返回对象周围的附加括号


推荐阅读