ssh2-sftp-client list方法过滤使用报错,寻求技术指导
ssh2-sftp-client list方法过滤功能的正确用法
你的报错原因是list方法的过滤回调参数不是文件名字符串,而是包含文件详情的对象,直接对参数调用includes会报错(对象没有这个方法)。
ssh2-sftp-client的list方法第二个参数的回调函数,接收的是每个文件/目录的信息对象,常见属性包括:
name: 文件名/目录名(字符串)type: 文件类型('-'代表普通文件,'d'代表目录,'l'代表软链接等)size: 文件大小(数字)modifyTime: 修改时间(时间戳)
修正后的过滤代码需要访问对象的name属性再进行判断:
let data = await sftp.list( 'engine/', (item) => !item.name.includes('READ') );
如果需要只过滤普通文件(排除目录),可以同时判断文件类型:
let data = await sftp.list( 'engine/', (item) => item.type === '-' && !item.name.includes('READ') );
如果你的运行环境不支持字符串includes方法(比如旧版Node.js),可以用indexOf替代:
// 效果等同于 !item.name.includes('READ') let data = await sftp.list( 'engine/', (item) => item.name.indexOf('READ') === -1 );
内容的提问来源于stack exchange,提问作者Kita
相关产品推荐
相关产品推荐

