问题标签 [ravendb4]

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 回答
70 浏览

c# - RavenDB4 中的这个线程已经打开了一个写事务

我正在尝试将用于挂火的 RavenDB 存储更新到 RavenDB4,但有时会收到以下异常:

Raven.Client.Exceptions.RavenException: 'System.InvalidOperationException: A write transaction is already opened by this thread

我检查了未关闭的会话,但是除了一个使用 using 和最后一个会话之外的所有会话都是特定的,因为它是一个类的一部分,就像一个事务构建器并且在提交时被处理。我无法找到在后台可能需要更长时间的操作或可能导致它的原因。

对于缩小可能导致此问题的原因,我将不胜感激,因为我完全不知道,文档并没有太大帮助。

0 投票
1 回答
110 浏览

c# - 使用 RavenDB 4 LINQ 提供程序查找两个列表的交集

如何查询 RavenDB 4 以查找具有与输入列表中的项目匹配的文档列表的文档?

以下内容曾经在 RavenDB 3 中工作,但在 4 中不受支持:

0 投票
1 回答
62 浏览

java - RavenDB 4 中的 Querydsl

更新到 RavenDB 4 似乎破坏了 querydsl 的 Maven 设置。这似乎不再起作用:

它不再识别 @QueryEntity 标记。我已经浏览了 4.0 文档,但找不到任何东西......感谢您提供任何解决此问题的指针。

问候

0 投票
1 回答
168 浏览

ravendb - RavenDB 4 和身份 ID

我刚刚将一个项目从 RavenDB 3.5 升级到 4.0,我注意到的最大变化之一是它们改变了 Id 的生成方式。

在我的项目中,大多数集合都有一个基本的 id 结构,如“[collection name]/[progressive id]”,其中progressive id 是一个整数,而不是新的默认值“[progressive]-[node]”。根据文档,我将新文档的模式 ID 指定为“[集合名称]|” 并且实际上正在生成唯一/渐进/整数ID。

问题是当我必须以事务方式保存 2 个或更多文档并在它们之间引用它们时。假设我有两种对象:

用户实体

用户地址实体

在第二个文档中,我需要通过 UserId 字段引用第一个文档。

在 4.0 版本之前,我能够在同一个事务中执行以下操作:

session.Store(newUser)之后,如果我访问newUser.Id属性,我能够看到生成的 Id。现在我只看到“用户|”,我必须在 SaveChanges() 之后等待才能看到生成的 Id。

这种行为似乎只发生在 Identities Id 上,如果我使用 id 结构“[collection name]/[progressive]-[node]”,我可以在 Store() 之后立即看到生成的 id。

是设计使然吗?有没有办法强制旧行为?或者我如何使用渐进式/整数 id 以事务方式管理像这样的情况?

0 投票
0 回答
118 浏览

javascript - RavenDb JavaScript JS 客户端创建数据库

是否可以使用 NodeJs RavenDb 客户端检查数据库是否存在,如果不存在则创建一个?

我有这么公平(index.js):

但我得到这个错误:

ue:已达到最大拓扑更新尝试次数

关于 NodeJs 客户端功能的文档很少,甚至看起来存储库都没有处于活动状态......

0 投票
1 回答
552 浏览

c# - RavenDB 4.0 存储原始 json

我正在使用 NLOG 通过 JsonLayout 进行日志记录,并希望将这些日志存储在 RavenDB 4.0 中。基本上我正在尝试使用 RavenDB .NET 客户端将原始 json 存储到 ravendb 中。

我在 RavenDB 3.5 中有一个可行的解决方案:使用从“RavenJObject”继承的类,但这个功能在 4.0 中被弃用了。

我通过将json反序列化为动态并存储动态对象来使其工作。但这会将文档存储在无意义的“JObjects”集合中。将 json 转换为动态并再次转换回 json 似乎也有开销。

我知道使用 UI(乌鸦工作室)是可能的。但我找不到使用.Net 客户端的方法。

我认为可能使用 http api,用原始 json 做一个帖子。但我还没有找到任何关于此的文档。

谁能帮帮我?任何建议表示赞赏!

0 投票
1 回答
30 浏览

.net - RavenDB 客户端在 session.Store 中死掉并且永远不会返回

我正在尝试将用户代码脚本保存在 RavenDB 中,到目前为止几乎一切正常。我从一个单独的进程中获得了一个脚本,我能够加载脚本、对其进行编辑并将其保存回数据库。

当我创建一个新脚本并尝试将其插入数据库时​​,问题就来了。我使用下面的代码。

当我说dies时,下一行没有执行,没有异常,而且我在任何地方都看不到错误,这很奇怪。几乎完全相同的代码可以使用 Id 保存实体,唯一的区别是添加时的 Id 字段为 null

我在 Net Core 2.0 中使用 RavenDB 4 和 Raven Client 4.02。

我对 Raven 很陌生,甚至不知道从哪里开始解决这个问题而没有错误,所以任何帮助都会很棒。

0 投票
2 回答
321 浏览

ravendb - 如何加载不使用默认 ID 生成策略时,限制为集合的 RavenDB 文档

在 RavenDB 4 (v4.0.3-patch-40031) 中,我有两种文档类型:AppleOrange. 两者都有相似但也不同的属性。我在运行时的代码中遇到了一个错误,有时会提供 Apple 的 ID,但会返回 Orange。可怕的!

深入其中,有点道理。但我正在努力寻找合适的解决方案。

开始。在 RavenDB 中,我将单个存储Apple为文档:

为了这个例子,假设我没有Orange存储在数据库中的文档。我希望这个测试能够成功:

...但它失败了。发生的情况是文档 ID 存在,因此 RavenDB 会加载文档。不在乎是什么类型。它会尝试自动映射属性。我预期或错误地假设 Load 类型说明符会将查找限制为该特定文档集合。相反,它在整个数据库中抓取 + 映射它,而不是将其限制为type <T>. 所以行为与 不同.Query<T>,后者对收集有约束。

需要注意的重要一点是,我通过将 Id 设置为(符合文档)来使用guids 作为身份策略。我假设默认的 ID 策略,比如,不会有这个问题。string.Emptyentityname/1001

Loading Entities 上的文档并没有真正提到这是否是故意的。它只说:“从数据库下载文档并将它们转换为实体。 ”。

但是,出于某种原因,我确实想将 Load 操作限制为单个集合。或者,更好的说法是,尽可能高效地按 ID 从特定集合中加载文档。如果不存在,则返回 null。

AFAIK,有两种选择可以实现这一目标:

  1. 使用更昂贵的.Query<T>.Where(x => x.Id == id),而不是.Load<T>(id)
  2. 做第.Load<T>(id)一个,然后检查(~不知何故,见底部)它是否是集合 T 的一部分

我的问题可以概括为两个问题

  1. 还有比上面提到的两个选项更高效或更稳定的方法吗?
  2. 如果没有,在这两个选项中 - 在性能和稳定性方面推荐哪个?

特别是对于第二个问题,很难正确地正确衡量这一点。至于稳定性,例如没有副作用,我想对 RavenDB 内部结构有更深入了解或经验的人可能会对此有所了解。

注意问题假设解释的行为是故意的,而不是 RavenDB 错误。

~不知何故是:

如何重现

更新 2018/04/19 - 在有用的评论后添加了这个可重现的示例(谢谢)。

楷模

测试
例如,在同一会话中抛出 InvalidCastException(有效),但在第二次它没有。

0 投票
1 回答
54 浏览

ravendb - 在 RavenDB v4 中获取匹配的文本

在 RavenDB < 4 中,您可以使用 FieldHighlightings 类从查询/搜索中获取匹配的单词/句子:

并迭代高亮变量以获取匹配文本。我的 RavenDB v4 这个类好像被去掉了。如何获取在查询/lucene 搜索中匹配的文本,而不仅仅是在其中找到它的文档?

即,如果我们有文本“这是一个小测试,它们将无处可去”并使用通配符查询“th*”进行搜索,那么我会期望结果“this”和“they”以及它们在文本中出现的位置。

这不再可能了吗?

0 投票
1 回答
119 浏览

exception - 如何找到 RAVENDB 方法可能引发的异常?

我是 RAVENDB 的新手。如何找到 RAVENDB 方法可能引发的异常?我搜索了在线文档和“Inside RAVENDB Book”,但没有成功。