如何从突变中获得新对象的ID
How to get the ID of a new object from a mutation?
我有一个createObject
突变,它返回新对象的ID。
返回后,我想重定向到关于新对象的详细页面。
如何使用react/relay从包含组件的突变中获得响应字段?
。我的createObject
页面包含如下代码的突变:
var onFailure = (transaction) => {
};
var onSuccess = () => {
redirectTo('/thing/${newthing.id}'); // how can I get this ID?
};
// To perform a mutation, pass an instance of one to `Relay.Store.update`
Relay.Store.update(new AddThingMutation({
userId: this.props.userId,
title: this.refs.title.value,
}), { onFailure, onSuccess });
}
newthing
应该是由突变产生的对象,但我如何才能获得它?
通常我们会用RANGE_ADD
配置突变的客户端,并从突变的服务器端返回一个新的thingEdge
,但是在这里,您在客户端上没有一个可以添加新节点的范围。要告诉Relay获取任意字段,请使用REQUIRED_CHILDREN
配置。
服务器端突变
var AddThingMutation = mutationWithClientMutationId({
/* ... */
outputFields: {
newThingId: {
type: GraphQLID,
// First argument: post-mutation 'payload'
resolve: ({thing}) => thing.id,
},
},
mutateAndGetPayload: ({userId, title}) => {
var thing = createThing(userId, title);
// Return the 'payload' here
return {thing};
},
/* ... */
});
客户端突变
class AddThingMutation extends Relay.Mutation {
/* ... */
getConfigs() {
return [{
type: 'REQUIRED_CHILDREN',
// Forces these fragments to be included in the query
children: [Relay.QL`
fragment on AddThingPayload {
newThingId
}
`],
}];
}
/* ... */
}
<标题> var onFailure = (transaction) => {
// ...
};
var onSuccess = (response) => {
var {newThingId} = response.addThing;
redirectTo(`/thing/${newThingId}`);
};
Relay.Store.update(
new AddThingMutation({
title: this.refs.title.value,
userId: this.props.userId,
}),
{onSuccess, onFailure}
);
请注意,使用此技术查询的任何字段都将对onSuccess
回调可用,但是将不添加到客户端存储。
相关文章:
- 为什么我的猫鼬对象 Id 请求返回一个空数组
- 基于变量创建json对象id
- Grails richui自动完成将对象传递给函数或更新对象ID
- 如何在jQuery中获取对象ID并将其与其他字符串组合
- 如何在 Javascript 中按 prev 对象 id 对对象数组进行排序
- 猫鼬对象 ID 不用作函数中的参数
- 如果对象 id 相同,如何合并对象
- 猫鼬对象 ID 不作为函数中的参数工作
- Parse.com / Javascript - 将用户对象ID字符串保存为用户指针
- 在 Javascript 中按对象 ID 分组
- JavaScript 通过 ID 获取元素与对象 ID
- 解析:保存后获取对象 ID
- 使用 jQuery 将点击的对象 ID 转换为变量以进行优化
- 返回匹配对象 id 的下一个和上一个对象
- 如何获取具有指针字段的对象 ID 的记录
- 使用javascript在parse.com中迭代对象id
- 如何在javascript中访问当前rails对象id
- 无法按对象id查询对象
- aspx客户端事件(javascript)中的发件人对象ID
- 通过对象id获取对象属性