" RESTAPI-INVALIDREQ :(错误:FOER0000)无效请求:原因:uri urlList.json的无效补丁:无效路径:/ test /

时间:2018-04-25 16:18:57

标签: node.js rest marklogic

我有一个marklogic数据库,其中包含以下名为urlList.json的JSON文档

{
   "test": {
             "ip": "10.10.10.10", 
             "fqdn": "www.test.test"
            }
}

我正在尝试使用补丁添加marklogic rest API来测试对象。我在这里使用带有请求 - 承诺模块的Node是代码

var options = {
  method: 'PATCH',
  url: 'https://test:8000/v1/documents',
  qs: { database: databaseName, uri: 'urlList.json' },
  headers:
    {
      'Content-Type': 'application/json',
      Accept: 'application/json'
    },
  strictSSL: false,
  auth: {
    user: userName,
    pass: password,
    sendImmediately: false
  },
  body: JSON.stringify({
    "patch": [
      {
        "insert": {
          "context": "/test/",
          "position": "last-child",
          "content": { "test": "test"}
        }
      }
    ]
  })
};

request(options)
  .then(results => {
    return resolve(results);
  })
  .catch(err => {
    return reject(err);
  })

运行时所需的结果是

{
   "test": {
             "ip": "10.10.10.10", 
             "fqdn": "www.test.test",
             "test": "test"
            }
}

每次运行时都会出现以下错误

"400 - "{\"errorResponse\":{\"statusCode\":400, \"status\":\"Bad 
Request\", \"messageCode\":\"RESTAPI-INVALIDREQ\", 
\"message\":\"RESTAPI-INVALIDREQ: (err:FOER0000) Invalid request:  
reason: invalid patch for uri urlList.json: invalid path: /test/\"}}""

这是发送的正文

"{"patch":[{"insert":{"context":"/test/","position":"last- 
child","content":{"test":"test"}}}]}"

1 个答案:

答案 0 :(得分:1)

路径必须选择一个节点。因此,路径不能以分隔符结束。这就是消息试图传达的内容。

它是否适用于/test的路径?

顺便说一句,MarkLogic提供了一个支持promises的Node.js API。这可能更容易使用。

希望有帮助,