Я пытаюсь читать из списка файлов, размещенных в местоположении с помощью 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? или я ошибаюсь в своем коде?