API-интерфейс updateDocument в модуле Discovery в sdk-сервере IBM watson-developer-cloud Node.js настаивает на параметре файла.

Я пытаюсь вставить / обновить документы в службе IBM Discovery с помощью SDK для watson-developer-cloud Node.js, но это не работает. С некоторыми из моих документов нет связанного файла, поэтому они содержат только метаданные. В этой документации говорится, что You must provide document content, metadata, or both. Однако < em> updateDocument вызовет ошибку, если вы попытаетесь обновить документ, содержащий только метаданные.

Я отследил проблему до строки 607 в node-sdk / discovery / v1.js, которая requiredParams: ['environment_id', 'collection_id', 'document_id', 'file'], и я считаю, что это источник проблемы, поскольку он указывает, что «файл» является обязательным параметром. , вопреки тому, что указано в документации API. Документация API должна быть правильной, потому что я могу легко обновить документ, содержащий только метаданные, из Обозреватель Discovery API.


person David Powell    schedule 01.09.2017    source источник


Ответы (1)


Вам просто нужно убедиться, что вы вызываете 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);
    }
  }
);

Документация не обновляется, но вы можете увидеть метод здесь.

person German Attanasio    schedule 01.09.2017
comment
Спасибо, какое-то время я делал это именно так, но проблема в том, что то, что было метаданными, становится документом. Это усложняет поиск и извлечение, поскольку имена полей различаются в зависимости от того, были ли введены только метаданные или нет (мы отбрасываем и сохраняем только метаданные, если размер документа превышает 50 МБ, предел обнаружения). Если я могу сделать это из проводника API, разве я не смогу сделать это и из SDK? - person David Powell; 01.09.2017
comment
То есть вы говорите, что даже с пустым объектом вы все равно можете загружать только метаданные? Вы можете сделать это с помощью curl, но не с помощью SDK? Какую команду вы выполняете? - person German Attanasio; 03.09.2017
comment
Правильно, немец. У меня не было времени, чтобы исправить синтаксис с помощью cURL, но я смог добавить документы, содержащие только метаданные, со страницы watson-api-explorer (watson-api-explorer.mybluemix.net/apis/discovery-v1 #! / Documents /). Я просто заполнил поля environment_id, collection_id, document_id, version и metadata и вообще не нажимал кнопку «Выбрать файл». Позже я попробовал это с помощью сгенерированной команды cURL, но, судя по всему, Swagger тоже не знает, как форматировать метаданные. - person David Powell; 04.09.2017