我有一个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"}}}]}"
答案 0 :(得分:1)
路径必须选择一个节点。因此,路径不能以分隔符结束。这就是消息试图传达的内容。
它是否适用于/test
的路径?
顺便说一句,MarkLogic提供了一个支持promises的Node.js API。这可能更容易使用。
希望有帮助,