问题标签 [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.

0 投票
1 回答
178 浏览

database - 用服务器生成的 id 替换 redux 商店 id 后如何重定向?

我目前正在使用redux-optimistic-ui能够在保存到数据库的同时立即向用户呈现某些内容。

在我的规范化 redux 存储的一部分保存在数据库中并返回一个 id 之前,我会生成一个临时 id,一旦我得到服务器答案就会被替换。

我遇到的问题与路由有关。由于 id 在我的应用程序的路由中大量使用,所以当我生成临时 id 时,它会在我等待服务器应答时在我的 url 中使用。

我认为这样做的方法是对history.replaceState包含新服务器生成的 id 的 url 做一些等效的事情。

我正在使用 react-router v4,但我不确定在哪里做。看来我不能直接从 redux 减速器做到这一点。我是否应该有另一个 UI 减速器来监听SUCCESS动作并存储要重定向的 url?还是有更清洁的方法?

谢谢 !

0 投票
1 回答
143 浏览

locks - 乐观锁是否适用于多个应用程序

多台服务器使用同一个数据库,当它们通过乐观锁访问相同的数据时。服务器A,服务器B获取版本1的数据,并与版本2同时提交。乐观锁是否适用于多个应用程序?

0 投票
1 回答
103 浏览

java - 对于我的低 Java 技能来说,这是一个很好的第一个项目吗?*年龄检测器*

我是 Andrew,我刚开始学习 Java 并编写了代码。我花了大约两个小时,但效果很好。它基本上允许你输入你的性别,然后是你的年龄,然后它会告诉你你是否老了,并带有一堆不同的设置信息。它有点基本且无用,但它是我的第一个项目:p 就是这样。

0 投票
1 回答
778 浏览

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 类型从TIMESTAMPto更改为NUMBER并删除可插入/可更新,它将按预期工作。

如果UPDATE不考虑版本(... AND tsrowversion=?)如何保证乐观锁?我怎样才能得到我的预期行为?

0 投票
2 回答
300 浏览

reactjs - React:唯一键和乐观更新

在我的 React 应用程序中,我使用数据库 ID 作为键来呈现从服务器返回的一组项目。

这工作正常,但现在我想做乐观更新,所以我在将新项目提交到服务器之前将它们插入到数组中,然后在post操作完成时添加数据库 id。现在我的数组简要地包含了由于缺少键而导致错误的没有 id 的项目。

该怎么办?我知道使用索引作为键被认为是一种反模式(https://www.menubar.io/react-keys-index/),所以这是不可能的。我也不想为这些项目生成新的唯一 ID,因为一旦将它们保存到数据库中,它们都会有两个唯一 ID。我考虑对未保存的对象使用随机键,但这似乎是一个不稳定的解决方案。

这种情况是否有最佳实践解决方案?我不可能是第一个遇到这个问题的人。

0 投票
0 回答
335 浏览

react-native - 使用 react native、redux 对喜欢/不喜欢和喜欢计数进行乐观更新

我正在构建具有像这样的喜欢/不喜欢能力的简单 视频

但是当喜欢或不喜欢被拒绝时它不能正常工作,因为在 componentDidUpdate 它会循环,我不知道应该使用什么条件来防止这种情况。这是我的组件:

0 投票
0 回答
515 浏览

javascript - Apollo Cache - 从缓存中部分读取?

我正在尝试使用 apollo 客户端实现乐观更新。

我已经让它在应用程序的不同地方工作,但是我在这里面对一堵墙。

我在跑

update突变回调中,我尝试了store.read它,它工作正常。但是,我无法从应用程序中的其他内容中获取这些数据。

我写入缓存的数据是这样的:

但是,在我想要使用此缓存数据的组件中,我的查询要复杂得多,并且我会获取更多字段。不仅如此,我还希望playlist.elements从网络中获取大部分内容,只有我希望来自缓存的这个特定的。

是否只获取id: 'test更新后的元素,而其他元素则正常从网络更新?目前,我只从网络获取数据,这个缓存写入的数据似乎不会影响我的查询结果。

谢谢 :)

0 投票
0 回答
87 浏览

date - Apollo - 对日期使用optimisticResponse

我正在尝试optimisticResponse使用react-apollo. 我的代码没有正确返回乐观响应数据并相应地重新渲染我的组件。我假设这是因为我没有从数据库返回的确切日期。

来自突变的示例对象:

我正在使用 pg 数据库并在创建行时自动生成日期ie.: ("2019-03-23T21:33:54.079Z")。我找不到任何相关问题,我不知道如何解决这个问题。

0 投票
0 回答
210 浏览

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(与第一个事务相同的记录),会发生死锁吗?

在乐观锁中进行事务的正确方法是什么?解决方案可以只使用存储过程吗?

0 投票
1 回答
197 浏览

ruby-on-rails - Rails 中的乐观锁定不允许在控制台中修改记录

我正在研究数据库锁定以确保多用户参与中的安全数据事务。

机器安装有乘客。

添加'lock_version'(整数)后,无法通过控制台修改记录。

比方说,

但是,有一个非常难得的机会,保存了一列,这让我很困惑。

导轨版本是 4.2.8

非常感谢许多想法..!

最好的