Marklogic 中的 JavaScript 多语句事务

2024-01-15

我想在 marklogic 中的服务器端 JavaScript 中编写多语句事务。我想要实现的是,执行更新事务,然后编写查询语句来查询更新的文档并确认更新在事务中可见,最后进行回滚。通过进行回滚,我想确认事务内进行的更新在事务外不可见,而在事务内可见。 我在 Xquery 和服务器端 JavaScript 中编写了代码,以便使用 xdmp:eval/xdmp.eval 来实现此目的。我能够使用 Xquery 成功实现它,但不能在服务器端 Javascript 中实现。

以下是我的 Xquery 代码:

xquery version "1.0-ml";
declare option xdmp:transaction-mode "update";

let $query :=
  'xquery version "1.0-ml";
   xdmp:document-insert("/docs/first.json", <myData/>)
  '
return xdmp:eval(
  $query, (),
  <options xmlns="xdmp:eval">
    <isolation>same-statement</isolation>
  </options>);

if (fn:doc("/docs/first.json"))
then ("VISIBLE")
else ("NOT VISIBLE");

xdmp:rollback()

下面是我的服务器端 JavaScript 代码:

declareUpdate();
var query = 'declareUpdate(); xdmp.documentInsert("/docs/first.json",{"first": 1}); '
xdmp.eval(query,null,{isolation:'same-statement'})

fn.doc("/docs/first.json")

if (fn.doc("/docs/first.json"))
var result = ("visible")
else var result = ("not visible");

xdmp.rollback()
result

我正在通过查询控制台执行这两个代码。我期待在这两种情况下看到“可见”的结果。但是当运行服务器端 JavaScript 代码时,它会抛出错误:[javascript] TypeError:无法读取 null 的属性“结果”由于 xdmp.rollback 并且无法看到变量“结果”中的值

有人可以纠正我的服务器端 JavaScript 代码中出现的问题吗?


在 SJS 和 XQuery 中,检查事务结果的方法是在与编排外部语句不同的语句中评估事务和检查。

(XQuery 分号语法分隔在不同事务中执行的语句——相当于一系列没有编排外部语句的 eval。)

类似以下内容应该有效:

'use strict';
xdmp.eval(
    'declareUpdate(); xdmp.documentInsert("/docs/first.json",{"first": 1});',
    null,
    {isolation:'different-transaction'});
const doc = xdmp.eval(
    'cts.doc("/docs/first.json")',
    null,
    {isolation:'different-transaction'});
fn.exists(doc);

也就是说,没有必要验证文档插入。如果插入失败,服务器会抛出错误。

也没有必要使用不同的事务来读取插入的文档以将其返回。只需在 xdmp.insert() 调用后返回文档即可。

希望有帮助,

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Marklogic 中的 JavaScript 多语句事务 的相关文章

  • 如何将udp发送到udp node.js服务器?

    我对此很陌生 所以我真的不知道我在做什么 但我已经设置了一个 node js udp 服务器 我想从客户端 来自网站 向它发送一个数据包 但我不知道如何在 javascript 中做到这一点 或者是否可能 我不是在研究如何从 Node js
  • 如果对象包含在另一个数组中,则从数组中删除该对象

    我试图从数组中删除一个对象 如果该对象的属性 唯一 包含在另一个数组中 我知道我可以像这样执行嵌套 for 循环 for i 0 i lt array length i for j 0 j lt array2 length j if arr
  • 动态速度计 javascript 或 jquery 插件

    我希望有动态ajax插件在页面上显示速度计 一个想法是我设置一个背景并旋转针 有人知道相关插件吗 这里有一些供您参考 http bernii github com gauge js http bernii github com gauge
  • 用隐藏单元格补充 colspanned 表格有什么不好吗?

    我一直在表格上开发一些排序和选择功能 我发现在具有跨单元格的表格中定位非常困难 我只是添加了跨区单元格并将其隐藏 它看起来不错 它与我的 js 一起工作 非常适合索引 但我想知道这是否是合法的方法 stuffing display none
  • 消息“在 jest.setTimeout 指定的 5000 毫秒超时内未调用异步回调”

    我正在使用 Puppeteer 和 Jest 来运行一些前端测试 我的测试如下 describe Profile Tab Exists and Clickable settings user gt test Assert that you
  • jQuery 选择 # id 以单词为前缀,计数器为后缀

    有没有办法用 jQuery 选择所有带有前缀 my 和后缀 0 9 的 id 像这样的 my 1 4 还是可以用循环来实现 div div div div div div div div div div 第一个想法 似乎效果很好 div i
  • Node.js - console.log 不显示数组中的项目,而是显示 [Object]

    我在注销对象内数组的内容时遇到问题 实际的物体看起来像这样 var stuff accepted item1 item2 rejected response Foo envelope from The sender to new item1
  • JavaScript 中数组的 HTML 数据列表值

    我有一个简单的程序 它必须从服务器上的文本文件中获取值 然后将数据列表填充为输入文本字段中的选择 为此 我想要采取的第一步是我想知道如何动态地将 JavaScript 数组用作数据列表选项 我的代码是
  • Javascript - 将值从下拉框传递到 Google Maps API

    我正在使用 Google 地图 API 为一家出租车公司创建报价表 目前 用户在 2 个文本框中输入出发点和接载点 API 会计算两点之间的距离以及行程费用 我正在尝试添加两个具有设定位置的下拉框 以便用户可以选择这些位置之一或使用文本框输
  • 如何流式传输 OpenAI 的完成 API?

    我想流式传输结果通过 OpenAI 的 API 完成 https beta openai com docs api reference completions 该文档提到使用服务器发送的事件 https developer mozilla
  • 是否有任何非轮询方式来检测 DOM 元素的大小或位置何时发生变化?

    很长一段时间以来 我一直在寻找一种方法来检测 DOM 元素的大小或位置何时发生变化 这可能是因为窗口调整了大小 或者因为向该元素添加了新的子元素 或者因为在该元素周围添加了新元素 或者因为 CSS 规则已更改 或者因为用户更改了浏览器的字体
  • 在d3.js中将2D形状转换为3D,并根据ANGULAR中的值调整高度

    我正在使用 d3 js v6 创建以下 2D 图表表示的 3D 图表 这个圆圈中有多个正方形 每个正方形都根据值分配了一种颜色 值越大 正方形越暗 现在我想将其转换为 3D 形状 其中当值变高时 只有特定正方形的高度会增加 因此结果在某种程
  • JS用正则表达式替换数字

    我有元素的标识符 如下所示 form book 1 2 3 我想要的是用其他值替换该标识符中的第二个数字 我将函数 match 与以下正则表达式一起使用 var regexp d d d 但它返回我包含的数组 1 2 3 2 因此 当我尝试
  • Chartjs刻度标签位置

    尝试让 Y 轴刻度标签看起来像image https i stack imgur com XgoxX png 位于秤顶部且不旋转 缩放选项当前如下所示 scales yAxes id temp scaleLabel display true
  • 查询为空 Node Js Sequelize

    我正在尝试更新 Node js 应用程序中的数据 我和邮递员测试过 我的开发步骤是 从数据库 MySQL 获取ID为10的数据进行更新 gt gt 未处理的拒绝SequelizeDatabaseError 查询为空 我认识到 我使用了错误的
  • Java:多线程内的 XA 事务传播

    我如何使用事务管理器 例如Bitronix http docs codehaus org display BTM Home JBoss TS http www jboss org jbosstm or Atomikos http www a
  • 如何在 Google 地图 V3 中创建编号地图标记?

    我正在制作一张上面有多个标记的地图 这些标记使用自定义图标 但我还想在顶部添加数字 我已经了解了如何使用旧版本的 API 来实现这一点 我怎样才能在V3中做到这一点 注意 当您将鼠标悬停在标记上时 标题 属性会创建一个工具提示 但我希望即使
  • 如何在 javascript 正则表达式中匹配平衡分隔符?

    我原以为这个问题是不可能的 据我所知 Javascript 的正则表达式既没有递归插值 也没有漂亮的 NET 平衡组功能 但问题就在那里 如问题 12 所示正则表达式 alf nu http regex alf nu 匹配平衡对 lt an
  • 单击列表时使用 bootstrap Dropdown 防止下拉菜单消失

    我正在使用使用引导下拉菜单 http twitter github com bootstrap javascript html dropdowns生成下拉菜单 我想防止点击菜单时菜单消失 我已经实现了以下代码 但它不起作用 知道如何修复它吗
  • 在 GWT 中,在任何主机页标记上添加事件处理程序

    我想为任何标签添加 MouseOver 事件处理程序 举个例子 我想为旧版 HTML 页面中的每个锚点页面添加事件处理程序 继GWT指南 http code google com webtoolkit doc 1 6 DevGuideUse

随机推荐

  • xpath 轴中的命名空间是什么

    我正在研究 XPath 轴 我能够理解以下所有轴 祖先 祖先或自我 属性 孩子 后裔 后代或自己 下列的 以下兄弟姐妹 父母 前 前兄弟 自己 我唯一无法理解的轴是 命名空间 谁能给我一个很好的例子并理解 命名空间 的实际作用 例子 Ope
  • 尝试更新 Twitter 状态时期望失败

    我似乎无法弄清楚这一点 无论我做什么 我都会收到 417 Expectation failed 错误 我看过的所有地方都说我需要删除 HttpWebRequest 的 Expect 标头 设置静态属性ServicePointManager
  • 通过我的程序路由所有数据包?

    我想构建一个通过我的应用程序路由所有网络流量 不仅仅是 HTTP 的应用程序 基本上 我想要的是给予我的应用程序的所有流量 它们永远不应该到达实际目标 我的应用程序应该处理这个 然后将其转发到服务器 输入也是如此 只是相反 服务器 gt 应
  • 如何根据 Google 表格中的单元格内容发送短信

    这是我上一个问题的后续如何循环 onEdit 函数从 Google 表格中的多行发送电子邮件 https stackoverflow com questions 56533837 how to loop an onedit function
  • PHP cURL 超时被忽略

    Using curl setopt 我已经设定CURLOPT CONNECTTIMEOUT MS到 1000 1 秒 并已设置另一个脚本休眠 5 秒 然后响应 200 OK 使用sleep 我称之为测试目的 我的脚本始终等待响应 即使它应该
  • 私有方法参数

    我有这个带有可选参数的方法 public static Test String connection Int32 retryInfiniteLoopGuard 0 有没有办法以某种方式标记retryInfiniteLoopGuard as
  • Sharepoint 2010 沙盒解决方案错误

    我对 Sharepoint Server 2010 沙箱解决方案有疑问 当我写作时 SPSite site new SPSite http win 5g8rm9qpjrp SPWeb web site OpenWeb 这两行代码 我有这样的
  • Erlang Linux 信号处理

    是否可以通过 Erlang 中的处理程序捕获 Linux 信号 例如 SIGUSR1 无需求助于 C 语言编写的驱动程序 不是真正的答案 2001年有人问 有没有人有unix的例子 Erlang 中的信号处理 我会 我喜欢制作一个负载均衡器
  • 从 TRY CATCH 内的单个语句捕获多个错误消息

    我正在对多个列和表运行一批语句 并希望检索有关发生的错误的信息 该语句是类型更改 varchar 到 nvarchar 当它失败时 它似乎返回 2 个错误 消息 5074 级别 16 状态 1 第 1 行 对象 DF XXX YYY 为 取
  • JQGrid 日期格式

    我正在使用 jQuery JQGrid 插件版本 3 8 2 并且在尝试弄清楚如何格式化日期 时间以进行显示时遇到问题 日期 时间采用 ISO 长格式 即 2011 02 16T14 46 43Z 我希望它以 mm dd yy H m s
  • 如何使用可序列化将类对象存储到内部内存存储中?

    我需要将此对象存储到手机的内部存储器中 并且我有
  • 尝试使用 jq 搜索数组时,数组和字符串无法进行包含检查错误

    我有一个 json 文件 大致如下所示 default name Joe Bloggs email email protected cdn cgi l email protection groups recipients name Jane
  • Codeigniter Active Record HAVING / WHERE db.field = db.field

    有人可以告诉我 这是否可以通过活动记录实现 以及如何实现 this gt db gt select this gt db gt from table1 this gt db gt join table2 table1 id table2 f
  • 如果没有管理员权限,您可以获得哪些注册表访问权限?

    我知道我们不应该再使用注册表来存储应用程序数据 但是在更新旧版应用程序 并希望进行最少的更改 时 非管理员可以使用哪些注册表配置单元 我可以访问所有HKEY CURRENT USER 应用程序当前访问HKEY LOCAL MACHINE 没
  • 实体框架 edmx 点击图表非常慢

    首先了解背景 我在 Windows 10 Pro 笔记本电脑上的 Visual Studio 2015 最新的 nuget 6 1 3 指向本地 SQL Server 2014 SP1 Express 数据库 中有一个数据库优先的 EF6
  • 在 C++ 中删除数组中的重复项同时保留顺序[重复]

    这个问题在这里已经有答案了 可能的重复 如何使向量的元素唯一 删除不相邻的重复项 https stackoverflow com questions 1453333 how to make elements of vector unique
  • 与 .net 和 mono 一起使用的最佳对象关系映射框架?

    我正在为我的学位项目做一些研究 使用 net3 5 和 mono2 0 开发的多平台应用程序 我需要一些关于你们认为最好的对象关系映射框架的意见 该框架也可以与单声道运行 此外 任何有关哪种 ROM 最适合我的项目的意见都会很方便 简单思考
  • Javafx:没有工具包发现异常

    我已在 intellij 插件中添加了 javafx 库 以添加 jfxwebview 但是当我尝试创建 JFXPanel 对象时 JFXPanle jfxpanel new JFXPanel 它给出了以下异常 No toolkit fou
  • 字典中的特征数量

    我正在努力从这样的 pickle 文件加载数据集 Load the dictionary containing the dataset with open final project dataset pkl r as data file d
  • Marklogic 中的 JavaScript 多语句事务

    我想在 marklogic 中的服务器端 JavaScript 中编写多语句事务 我想要实现的是 执行更新事务 然后编写查询语句来查询更新的文档并确认更新在事务中可见 最后进行回滚 通过进行回滚 我想确认事务内进行的更新在事务外不可见 而在