2017-01-25 14 views
0

Я пытаюсь читать из списка файлов, размещенных в местоположении с помощью NodeJS, и создавать ресурсы для этих файлов в CKAN. Я использую CKAN API v3 (/ api/3) для создания ресурса.CKAN resource_create API

NodeJS библиотека, используемая для переборе файлов в месте: filehound

CKAN API Используется: /API/3/действие/resource_create

код для итерации по файлам (пожалуйста, не запустить его, это только пример сниппет):

// file operations helper 
 
const fileHound = require("filehound"); 
 

 
// filesystem 
 
const fs = require("fs"); 
 

 
// to make http requests 
 
const superagent = require("superagent"); 
 

 
var basePath = "/test-path", packageId = "8bf37d22-0c25-40c0-8faa-7de12ff927f5"; 
 

 
var files = fileHound.create() 
 
    .paths(basePath) 
 
    .find(); 
 

 
files.then(function (fileNames) { 
 
    if (Array.isArray(fileNames)){ 
 
    for (var fileName of fileNames) { 
 
     superagent 
 
        .post("http://test-ckan-domain.com/api/3/action/resource_create") 
 
        .set("Authorization", "78d5d219-37de-41f7-9443-188bc564051e") 
 
        .field("package_id", packageId) 
 
        .field("name", fileName) 
 
        .field("format", "CSV") 
 
        .attach("upload", fs.createReadStream(fileName)) 
 
        .end(function (err, res) { 
 
         if (!err) console.log(fileName ,"Status Code ", res.statusCode); 
 
         else console.log("Error ", err); 
 
        }); 
 
    } 
 
    } 
 
});

После переборе файлов и их загрузок CKAN пути создания нового ресурса, CKAN отвечает обратно «успех: истинный» и «идентификатор» ресурс, созданный с кодом состояния HTTP 200.

Однако только создано несколько ресурсов (ресурсов), а немногие - нет. Я использую интерфейс CKAN для проверки того, был ли ресурс создан в пакете/наборе данных (по мере успешного ответа от API создания ресурсов).

Это известная проблема с CKAN? или я ошибаюсь в своем коде?

ответ

0

Вероятно, вы решили это сделать, но, учитывая, что некоторые пакеты просто отсутствуют, но вы получаете только 200 сообщений об успешной работе, мне интересно, не работает ли ваш цикл for. Будьте осторожны с синтаксисом; Я думаю, что объявление var filename внутри цикла может быть неправильным.

https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Statements/for...of