我很难从Node.js转换为Appengine @ google-cloud / storage。 要验证文件夹是否为最新,请执行一些简单的步骤:
在常规javascript中,运行起来像这样,没有问题:
if (!fs.existsSync(full_path)) {
return false;
}
else {
// else verify if all requiered files exist
let check = true;
let files = fs.readdirSync(full_path);
allExpectedFiles.forEach((f) => {
if (pfs.pfs.getFileName('pictures') !== f && files.indexOf(f) === -1) {
// console.log(c.cyan, 'Not found file: ' + f);
check = false;
}
});
return check;
}
使用@ google-cloud / storage库...我无法使其正常工作。
我尝试过:
// if folder does not exist:
const dir = bucket.file(full_path);
let doesExist = await dir.exists();
console.info('For:', name, ' does folder exist?:',full_path, doesExist[0]);
if (!doesExist[0]) {
// folder does not exist so it's not uptodate
return false;
}
即使存在的人我也错了。
注1:如果我检查文件(添加文件名而不是以“ /”结尾),则它可以工作。但是我需要检查文件夹。
此外,我试图从文件夹中获取文件(通过检查文件对文件夹强制为true),我也无法获取它们。
let files = await bucket.getFiles({prefix: full_path, delimiter:'.json'});
console.log(c.magenta,'Here are the files:');
console.log(files);
我什么都没有。我使用了前缀和分隔符,但是我无法使它们正常工作。
注2:我确实读过:How subdirectories works,但是……显然我听不懂。
有什么建议吗?我知道这应该是一个非常简单的任务,我无法使其正常工作。
以后的修改: 我设法获取文件,但只能作为“ all / the / long / path / filename.json”。我可以接受它,我将提取文件名,但是似乎出了点问题,并不是那么困难。这是我的代码:
let files = await bucket.getFiles({
prefix : full_path
});
files = files[0];
files.forEach((f)=>{
console.log(c.magenta, 'Fisierele cele multe:', f.name);
});
答案 0 :(得分:2)
Cloud Storage中确实没有目录。它们只是基于文件路径进行仿真。
因此,只需跳过检查目标目录是否存在并创建目录的步骤,然后直接检查“目录”中的文件,然后根据要检查的源目录构建文件路径即可。