【发布时间】:2017-01-10 08:02:15
【问题描述】:
我将 Redux 与使用 UUID 的 REST api 一起使用。存储状态的常用模式是使用 id 作为对象的键:
entities: {
articles: {
1: {
id: 1,
title: 'Some Article',
author: 1
},
2: {
id: 2,
title: 'Other Article',
author: 1
}
},
users: {
1: {
id: 1,
name: 'Dan'
}
}
}
我将如何在此使用 api 中的 UUID?我希望能够创建一个新实体,而不必先从服务器请求 UUID(用于离线功能)。
我应该:
- 使用本地ID,将UUID保存在实体的
_id属性中,并且只在发出API请求时使用?这似乎是最简单的方法,虽然感觉多余,而且在某些情况下我可能不得不在实体中搜索某个_id。
entities: { articles: { 1: { _id: 'UUID', title: 'Some Article', author: 1 }, 2: { id: 'UUID', title: 'Other Article', author: 1 } }, users: { 1: { _id: 'UUID', name: 'Dan' } } }
- 仅使用 API 中的 UUID,并且在创建新项目时使用排序(如果是临时 id)直到 API 调用得到解决?这似乎是最好的方法,虽然我不确定如何更改 id,这也感觉不对(因为它们是 id)。
entities: { articles: { 'UUID': { _id: 'UUID', title: 'Some Article', author: 'UUID' }, 'UUID': { _id: 'UUID', title: 'Other Article', author: 'creating' } }, users: { 'UUID': { _id: 'UUID', name: 'Dan' }, 'creating': { name: 'Stan' } } }
- 用别的方法吗?
【问题讨论】:
-
也许你可以通过'node-uuid'模块在客户端生成uuid
-
@Utro 这就是我最初的想法,但它似乎是一种不寻常的方法,具有一些安全性和性能影响。
-
你想出解决方案了吗?
-
@BenLime 我目前正在使用 2 号下的方法。当 id 从服务器返回时,我用服务器中的实体替换带有临时 id 的实体。
-
@BenLime 这绝对是笨重的!如果您找到一个很好的解决方案,请务必在此处发布答案;)
标签: javascript reactjs redux