#node.js #azure #variables #upload #sftp
Вопрос:
Мне нужно загрузить файлы на sftp — сервер с помощью функций Azure. Я использую для этого «ssh2-sftp-клиент». У меня есть index.js где вызывается функция загрузки и соответствующие сведения отправляются в качестве параметров.
Ниже приведена моя функция загрузки.
function upload(context,host,port,username,folder,dataStream,fileName,encodedPrvKey) {
let privateKeyBuffer=Buffer.from(encodedPrvKey,'base64')
let privateKeyString=privateKeyBuffer.toString();
const config = {
host: host,
port: port,
username: username,
privateKey: privateKeyString
};
let sftp = new Client;
let remote = folder '/' fileName;
var status=0;
context.log('starting sftp')
sftp.connect(config)
.then(() => {
console.log('connected')
console.log('uploaded file successfully')
return sftp.put(dataStream, remote);
})
.then(() => {
return sftp.list(folder)
}).then((data)=>{
status=200;
console.log(data)
})
.then(()=>{
return sftp.end();
})
.catch(err => {
status=500;
console.error('Error occured during SFTP upload')
console.error(err)
});
context.log('status--' status)//this returns undefined
console.log('status--' status)//this returns 0
return status;
}
Код работает абсолютно нормально, файлы загружаются, но у меня есть несколько вопросов, и мне нужна помощь с этим,
- Я не могу использовать context.log() внутри sftp.connect ? Есть идеи, почему? Отлично работает с console.log (), но эти журналы печатаются после завершения журналов выполнения.
- Когда я пытаюсь получить доступ к статусу вне .then() amp; .catch(), он приходит как неопределенный. В той же функции, если я печатаю с помощью console.log() — значение равно 0, а с помощью context.log() оно не определено.
Любая помощь здесь была бы очень признательна. Я не уверен, что происходит , пробовал разные вещи, но, похоже, не работает хорошо, моя цель состоит в том, чтобы обрабатывать как успешные, так и неудачные случаи с помощью переменной состояния, чтобы один и тот же статус можно было вернуть пользователю, указав, была ли операция успешной или нет.
Заранее спасибо.