2

我正在尝试通过 watson-developer-cloud Node.js SDK 在 IBM 的 Discovery 服务中插入/更新文档,但它不起作用。我的一些文档没有关联文件,因此它们仅是元数据。 该文档You must provide document content, metadata, or both.但是,如果您尝试更新仅元数据的文档,则updateDocument调用将失败。

我将问题追踪到node-sdk/discovery/v1.js中的第 607 行requiredParams: ['environment_id', 'collection_id', 'document_id', 'file'],我认为这是问题的根源,因为它表明“文件”是必需的参数,这与 API 文档的说明相反. API 文档必须正确,因为我可以从Discovery API explorer更新仅包含元数据的文档。

4

1 回答 1

2

您只需要确保调用updateJsonDocument()并发送一个空对象

const DiscoveryV1 = require('watson-developer-cloud/discovery/v1');
const fs = require('fs');

const discovery = new DiscoveryV1({
  username: 'YOUR USERNAME',
  password: 'YOUR PASSWORD',
  version_date: DiscoveryV1.VERSION_DATE_2017_08_01
});

discovery.updateJsonDocument(
  {
    environment_id: 'YOUR ENVIRONMENT ID',
    collection_id: 'YOUR COLLECTION ID',
    configuration_id: 'YOUR CONFIGURATION ID',
    file: {},
    metadata: { foo: 'bar' }
  },
  function(error, data) {
    if (error) {
      console.log(error);
    } else {
      console.log(data);
    }
  }
);

文档未更新,但您可以在此处查看方法。

于 2017-09-01T13:36:50.013 回答