小编Xuo*_*riG的帖子

接力突变:突变的分类关联

在很多情况下,我们有突变,其中存在我们需要变异的一对多或多对多关联,以及将关联作为分页列表暴露给查询的位置.

有一些关键要求:

  • 客户端必须能够删除,添加和更新关联的元素
  • 在某些情况下,关联的顺序很重要,在这种情况下,客户端也必须能够重新排序元素

不太重要:

  • 客户端应该能够在创建父级时指定关联(例如,在创建产品的同时创建一组有序的变体)
  • 客户端应该能够使用某种形式的事务原子性一次删除,添加,更新和重新排序关联的元素
  • 客户端不必对整个当前关联进行分页,以添加或删除单个元素

这个问题有很多可能的解决方案:

选项1 - 单输入字段,无附加突变

输入类型具有单个数组输入字段,表示关联的总真实性(添加新元素,更新现有元素,删除缺少的元素,并在必要时保留顺序).

缺点:删除非常隐含.客户端必须通过关联的整个当前状态进行分页.不精细.

选项2 - 具有位置的单输入字段,删除突变

输入类型具有单个数组输入字段,用于更新现有元素并添加新元素(忽略缺少的元素).可以在元素上指定位置或索引值以对其重新排序.单独的突变用于删除元素.

缺点:删除在变异中自行关闭是不一致的,而所有其他操作都在父节点上.不太精细.

选项3 - 单输入字段,删除和重新排序变异

输入类型具有单个数组输入字段,用于更新现有元素并添加新元素(忽略缺少的元素).单独的突变用于删除和重新排序元素.

缺点:客户端无法将新元素添加到关联中的特定位置,必须添加它们,然后单独重新排序.不太精细.

选项4 - 单输入字段,添加/删除/重新排序突变

与选项3类似,但输入字段仅用于更新; 单独的变异用于添加新元素.

缺点:客户必须进行多次突变才能执行复杂的更新.客户端无法使用初始关联创建父级.

选项5 - 完全独立的突变

父输入类型没有相关字段,所有内容都通过四个单独的突变完成,用于添加/删除/更新/重新排序.

优点:非常明确和精细,将不同的数据模型对象分开.缺点:客户必须进行多次突变才能执行复杂的更新.客户端无法使用初始关联创建父级.

选项6 - 具有位置的两个输入字段

输入类型有两个数组字段:一个用于更新,添加和重新排序元素(请参阅选项2),另一个用于删除.

缺点:感觉就像我们污染了父母的突变; 不精细.

选项7 - 两个输入字段,重新排序变异

与选项6类似,除了使用单独的重新排序变异而不是位置参数.

缺点:重新排序自行关闭不一致.另见选项6的缺点.

所有这些选择似乎都有缺点.选项5似乎是最明确的,但要求用户同时使用多个突变,其中操作不再是原子的.

Facebook处理这些类型突变的方式是什么?你的方式是什么?谢谢!

graphql relayjs

7
推荐指数
1
解决办法
877
查看次数

将字符串转换为int(C++)

我到处寻找,找不到这个具体问题的答案:(

我有一个字符串日期,其中包含剥去所有特殊字符的日期.(即:yyyymmddhhmm或201212031204).

我正在尝试将此字符串转换为int以便以后能够对它们进行排序.我试过atoi,没用,因为这个函数的值太高了.我尝试过流,但它总是返回-858993460,我怀疑这是因为字符串太大了.我试过atol和环礁,他们仍然没有给出正确的答案.

我宁愿不使用提升,因为这是作业,我不认为我会被允许.

我没有将大字符串转换为int的选项吗?谢谢!

我希望能做什么:

int dateToInt(string date)
{
date = date.substr(6,4) + date.substr(3,2) + date.substr(0,2) + date.substr(11,2) + date.substr(14,2);
int d;
d = atoi(date.c_str());
return d;

}
Run Code Online (Sandbox Code Playgroud)

c++ string int atoi

1
推荐指数
1
解决办法
1714
查看次数

标签 统计

atoi ×1

c++ ×1

graphql ×1

int ×1

relayjs ×1

string ×1