问题标签 [optimistic]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
database - 用服务器生成的 id 替换 redux 商店 id 后如何重定向?
我目前正在使用redux-optimistic-ui
能够在保存到数据库的同时立即向用户呈现某些内容。
在我的规范化 redux 存储的一部分保存在数据库中并返回一个 id 之前,我会生成一个临时 id,一旦我得到服务器答案就会被替换。
我遇到的问题与路由有关。由于 id 在我的应用程序的路由中大量使用,所以当我生成临时 id 时,它会在我等待服务器应答时在我的 url 中使用。
我认为这样做的方法是对history.replaceState
包含新服务器生成的 id 的 url 做一些等效的事情。
我正在使用 react-router v4,但我不确定在哪里做。看来我不能直接从 redux 减速器做到这一点。我是否应该有另一个 UI 减速器来监听SUCCESS
动作并存储要重定向的 url?还是有更清洁的方法?
谢谢 !
locks - 乐观锁是否适用于多个应用程序
多台服务器使用同一个数据库,当它们通过乐观锁访问相同的数据时。服务器A,服务器B获取版本1的数据,并与版本2同时提交。乐观锁是否适用于多个应用程序?
java - 对于我的低 Java 技能来说,这是一个很好的第一个项目吗?*年龄检测器*
我是 Andrew,我刚开始学习 Java 并编写了代码。我花了大约两个小时,但效果很好。它基本上允许你输入你的性别,然后是你的年龄,然后它会告诉你你是否老了,并带有一堆不同的设置信息。它有点基本且无用,但它是我的第一个项目:p 就是这样。
jpa - 带有 SQLServer TIMESTAMP 的 JPA 乐观锁
我正在尝试在 SQLServer 上设置 JPA 乐观锁。为此,我使用了一个TIMESTAMP
列(SQLServerTIMESTAMP
是一个递增的数字,不保留日期或时间)。
作为一个自动递增的数字,在我的 Java 实体上,我需要将可插入/可更新设置为,false
否则我会得到一个异常:
com.microsoft.sqlserver.jdbc.SQLServerException:无法更新时间戳列
这是我的 Java 实体映射:
当我更新一条记录时,这个 SQL 被执行:
但我期待得到类似的东西:
Hibernate 首先执行 aSELECT
以检查记录是否已更改 (1),然后更新 (2)。如果记录被更改,则会引发异常:
org.hibernate.StaleObjectStateException:行已被另一个事务更新或删除
所以它工作正常,但我期待UPDATE
考虑到版本(3)。实际上,如果将 sql 类型从TIMESTAMP
to更改为NUMBER
并删除可插入/可更新,它将按预期工作。
如果UPDATE
不考虑版本(... AND tsrowversion=?
)如何保证乐观锁?我怎样才能得到我的预期行为?
reactjs - React:唯一键和乐观更新
在我的 React 应用程序中,我使用数据库 ID 作为键来呈现从服务器返回的一组项目。
这工作正常,但现在我想做乐观更新,所以我在将新项目提交到服务器之前将它们插入到数组中,然后在post操作完成时添加数据库 id。现在我的数组简要地包含了由于缺少键而导致错误的没有 id 的项目。
该怎么办?我知道使用索引作为键被认为是一种反模式(https://www.menubar.io/react-keys-index/),所以这是不可能的。我也不想为这些项目生成新的唯一 ID,因为一旦将它们保存到数据库中,它们都会有两个唯一 ID。我考虑对未保存的对象使用随机键,但这似乎是一个不稳定的解决方案。
这种情况是否有最佳实践解决方案?我不可能是第一个遇到这个问题的人。
react-native - 使用 react native、redux 对喜欢/不喜欢和喜欢计数进行乐观更新
我正在构建具有像这样的喜欢/不喜欢能力的简单 视频
但是当喜欢或不喜欢被拒绝时它不能正常工作,因为在 componentDidUpdate 它会循环,我不知道应该使用什么条件来防止这种情况。这是我的组件:
javascript - Apollo Cache - 从缓存中部分读取?
我正在尝试使用 apollo 客户端实现乐观更新。
我已经让它在应用程序的不同地方工作,但是我在这里面对一堵墙。
我在跑
在update
突变回调中,我尝试了store.read
它,它工作正常。但是,我无法从应用程序中的其他内容中获取这些数据。
我写入缓存的数据是这样的:
但是,在我想要使用此缓存数据的组件中,我的查询要复杂得多,并且我会获取更多字段。不仅如此,我还希望playlist.elements
从网络中获取大部分内容,只有我希望来自缓存的这个特定的。
是否只获取id: 'test
更新后的元素,而其他元素则正常从网络更新?目前,我只从网络获取数据,这个缓存写入的数据似乎不会影响我的查询结果。
谢谢 :)
date - Apollo - 对日期使用optimisticResponse
我正在尝试optimisticResponse
使用react-apollo
. 我的代码没有正确返回乐观响应数据并相应地重新渲染我的组件。我假设这是因为我没有从数据库返回的确切日期。
来自突变的示例对象:
我正在使用 pg 数据库并在创建行时自动生成日期ie.: ("2019-03-23T21:33:54.079Z")
。我找不到任何相关问题,我不知道如何解决这个问题。
deadlock - 乐观锁会导致死锁吗?
示例:我有一个表 A(id、版本和一个字段)和一个表 B(id、版本和一个字段)。
我需要进行编辑记录 A 和记录 B 的事务。
- 开始交易
- update tableA set field='aaa', version=version+1 where id=1 and version=savedversion -if recordupdated=0 then rollback
- update tableB set field='bbb', version=version+1 where id=1 and version=savedversion -if recordupdated=0 then rollback
- 犯罪
但是如果我有另一个线程需要以相反的顺序更新表(在复杂的环境中,开发人员可能不遵守策略),或者需要更新表 A(与第一个事务不同的记录) ,然后表B(与第一个事务相同的记录),然后A(与第一个事务相同的记录),会发生死锁吗?
在乐观锁中进行事务的正确方法是什么?解决方案可以只使用存储过程吗?
ruby-on-rails - Rails 中的乐观锁定不允许在控制台中修改记录
我正在研究数据库锁定以确保多用户参与中的安全数据事务。
机器安装有乘客。
添加'lock_version'(整数)后,无法通过控制台修改记录。
比方说,
但是,有一个非常难得的机会,保存了一列,这让我很困惑。
导轨版本是 4.2.8
非常感谢许多想法..!
最好的