Node.js 使用Watson开发者云节点SDK在IBM Watson Discovery Service中创建新文档
我尝试为IBMWatson发现服务创建一个新文档,并使用Watson开发者云/节点sdk 文档中的内容应该来自字符串,而不是文件。我试过了,但没有成功Node.js 使用Watson开发者云节点SDK在IBM Watson Discovery Service中创建新文档,node.js,watson,watson-discovery,Node.js,Watson,Watson Discovery,我尝试为IBMWatson发现服务创建一个新文档,并使用Watson开发者云/节点sdk 文档中的内容应该来自字符串,而不是文件。我试过了,但没有成功 discovery.addDocument({ environment_id: MYENVID, collection_id: MYCOLID, metadata:'{"Content-Type":"application/json"}', file:Buffer.from("HERE IS MY TEXT",
discovery.addDocument({
environment_id: MYENVID,
collection_id: MYCOLID,
metadata:'{"Content-Type":"application/json"}',
file:Buffer.from("HERE IS MY TEXT", 'utf8')
}, function(err, data) {
if (err) {
return next(err);
} else {
return res.json(data)
}
});
这将创建一个没有内容的文档。
这就是结果的样子
{
"id": "MYID",
"score": 1,
"metadata": {
"Content-Type": "application/json"
},
"enriched_field_units": 0
}
有什么简单的东西我错过了吗?你没有错过任何东西。目前正在开发的SDK中有一个bug。应该很快修好 我知道这是一个老问题,但我想提供一个更新,因为已经修复了两个额外的bug,并且在v2.34.0中添加了一个新的
addJsonDocument()
方法
首先要指出的是,在确定内容类型时,发现会忽略元数据对象。它只查看文件名和文件内容
text/plain
不受支持,因此根据您的确切示例,它将返回正确的标识和错误消息
但是,如果您在那里替换了有效的JSON,它仍然可能会错误地将其标识为没有适当文件名的文本
设置.json文件名或使用新的addJsonDocument()
方法可以解决此问题:
- 要设置文件名,请将
设置为具有文件
和值
字段:选项的对象。文件名
discovery.addDocument({ environment_id: 'env-id-here', collection_id: 'coll-id-here', configuration_id: 'config-id-here', file: { value: Buffer.from("JSON goes here", 'utf8'), options: { filename: 'whatever.json' } } }, function(err, data) { if (err) { console.error(err); } else { console.log(JSON.stringify(data, null, 2)); } });
- 或者,对于JSON,使用addJsonDocument():
var document_obj = {
environment_id: environment,
collection_id: collection,
file: {"foo": "bar"}
};
discovery.addJsonDocument(document_obj, function (err, response) {
if (err) {
console.error(err);
} else {
console.log(JSON.stringify(response, null, 2));
}
});