我正在努力让普里斯玛和继电器工作。这是我的回购协议:
https://github.com/jamesmbowler/prisma-relay-todo
这是一个简单的待办事项列表。我可以添加待办事项,但用户界面不会更新。当我刷新时,待办事项就在那里。
我能找到的所有更新存储的示例都对正在更新/创建的对象使用“父”。
看https://facebook.github.io/relay/docs/en/mutations.html#using-updater-and-optimisticupdater
此外,“更新程序配置”还需要“parentID”。https://facebook.github.io/relay/docs/en/mutations.html#updater-配置
来自中继运行时的RelayConnectionHandler。js备注:https://github.com/facebook/relay/blob/master/packages/relay-runtime/handlers/connection/RelayConnectionHandler.js#L232
* store => {
* const user = store.get('<id>');
* const friends = RelayConnectionHandler.getConnection(user, 'FriendsFragment_friends');
* const edge = store.create('<edge-id>', 'FriendsEdge');
* RelayConnectionHandler.insertEdgeAfter(friends, edge);
* }
是否可以在没有“父项”的情况下更新存储?没有父母的陪伴,我只有很多事情要做。
同样,创建记录是可行的,并给出以下响应:
{“data”:{“createTodo”:{“id”:“cjpdbivhc00050903ud6bkl3x”,“name”:“testing”,“complete”:false}}}}
这是我的更新功能
updater: store => {
const payload = store.getRootField('createTodo');
const conn = ConnectionHandler.getConnection(store.get(payload.getDataID()), 'Todos_todoesConnection');
ConnectionHandler.insertEdgeAfter(conn, payload, cursor);
},
我做了一个控制台。日志(conn),它是未定义的。
请帮忙。
----编辑——多亏了丹尼斯,我认为有一个问题解决了——连接处理器(ConnectionHandler)。
但是,我仍然无法更新ui。以下是我在updater函数中尝试的内容:
const payload = store.getRootField('createTodo');
const clientRoot = store.get('client:root');
const conn = ConnectionHandler.getConnection(clientRoot, 'Todos_todoesConnection');
ConnectionHandler.createEdge(store, conn, payload, 'TodoEdge');
我也尝试过:
const payload = store.getRootField('createTodo');
const clientRoot = store.get('client:root');
const conn = ConnectionHandler.getConnection(clientRoot, 'Todos_todoesConnection');
ConnectionHandler.insertEdgeAfter(conn, payload);
我的数据形状与他们的示例不同,因为我在返回的数据中没有“todoEdge”和“node”(见上文)。
todoEdge{光标节点{完整id文本}}
如何像这样获取LinkedRecords?
const newEdge = payload.getLinkedRecord('todoEdge');
如果查询是父级,则父ID将是客户端:根。
看看这个:https://github.com/facebook/relay/blob/1d72862fa620a9db69d6219d5aa562054d9b93c7/packages/react-relay/classic/store/RelayStoreConstants.js#L18
同样在这个问题上:https://github.com/facebook/relay/issues/2157#issuecomment-385009482
创建一个constROOT_ID='Client: root';
并将ROOT_ID
作为您的父母ID
传递。此外,检查更新程序上连接的名称,它必须与您声明查询的名称完全相同。
更新:实际上,您可以导入中继运行时的根ID
从'中继运行时'导入{ROOT_ID};
更新2:
您的编辑对我来说不是很清楚,但我会为您提供一个它应该可以工作的示例?运行突变后,您首先使用getRootField
访问它的数据,就像您正在做的那样。所以,如果我有一个突变,例如:
mutation UserAddMutation($input: UserAddInput!) {
UserAdd(input: $input) {
userEdge {
node {
name
id
age
}
}
error
}
}
你会做:
const newEdge = store.getRootField('UserAdd').getLinkedRecord('userEdge');
connectionUpdater({
store,
parentId: ROOT_ID,
connectionName: 'UserAdd_users',
edge: newEdge,
before: true,
});
这是一个助手函数,看起来像这样:
export function connectionUpdater({ store, parentId, connectionName, edge, before, filters }) {
if (edge) {
if (!parentId) {
// eslint-disable-next-line
console.log('maybe you forgot to pass a parentId: ');
return;
}
const parentProxy = store.get(parentId);
const connection = ConnectionHandler.getConnection(parentProxy, connectionName, filters);
if (!connection) {
// eslint-disable-next-line
console.log('maybe this connection is not in relay store yet:', connectionName);
return;
}
const newEndCursorOffset = connection.getValue('endCursorOffset');
connection.setValue(newEndCursorOffset + 1, 'endCursorOffset');
const newCount = connection.getValue('count');
connection.setValue(newCount + 1, 'count');
if (before) {
ConnectionHandler.insertEdgeBefore(connection, edge);
} else {
ConnectionHandler.insertEdgeAfter(connection, edge);
}
}
}
希望有帮助:)
一、简介 当对PHPSSO进行修改后,执行此操作。 二、功能演示 更新应用列表缓存。如下图所示:
我不明白为什么不更新我的对象。在另一个组件中,我通过调度更新状态。在此情况下(在下面的代码中),mapStateToProps类别中的代码正在更改(控制台日志显示另一个类别)。但组件并没有重播,虽然在组件中我使用了道具。类别。事件控制台。登录元素未运行 我认为,如果我更新状态,则根据该状态更新组件。它应该如何工作?它应该如何工作?它可能很有用,添加类别的项不是父项或子项,而是邻居 谢谢你解决问题。
由于“需要HTTPS”错误,我最近在构建项目时遇到了问题。这个问题通过如下所述修改我的pom.xml得到了解决,添加了以下内容: 然而,为我的每个项目更新每个pom.xml是一件麻烦的事。 我尝试将相同的代码片段添加到我的settings.xml,但没有成功。 我知道更新版本的Maven解决了这个问题。然而,由于工作限制,我无法更新我的环境。 我目前已经安装了Java8和Maven,由Netbea
我有一个数据已经保存在我的数据库基于我的存储库和服务。我想保存另一个数据与邮递员只改变播放器id。但它不是创建一个新的实体数据。它更新现有的实体数据。我的问题是如何更新一个数据由我的服务当它找到一个现有的id。但当它找到一个新的id将保存一个新的数据到数据库。 这是我的回购: 这是我的服务:
我有一个Spring应用程序,其中Domain Object标识符不是由数据库分配的,而是由应用程序生成的。标识符是在BeforeSave回调期间生成并添加到Domain Object中的。保存域对象(插入)后,当尝试保存具有相同标识符的域对象(更新)时,我收到以下错误 原因:组织。springframework。道。Incorrectupdatesemanticdataaccessexcepti
我使用SpringBoot@CachePut和@Cacheable注释来缓存数据。 在buildCache中,我从远程数据库获取值,并将这些值保存在本地数据库和缓存中。在getCache方法中,我从本地数据库获取值。当我第一次调用getCache方法时,它被执行,本地DB值被保存在缓存中。然后我调用buildCache方法来更新缓存和本地DB值。之后,我再次调用getCache方法来获取更新后的值