У меня есть функция для получения сигнатуры для s3 в отдельном файле javascript (s3.js). Теперь мне нужно вызвать эту функцию в моем маршруте, помещенном в другой файл.
getSignedUrl работает, и я смог правильно записать результат. Но он не передает результат функции вызывающей стороны.
получить подписанную функцию URL (файл s3.js)
getPreSignedurl: function(filekey,callback) {
const bucket = 'bucket-name'
const key = filekey
const signedUrlExpireSeconds = 60 * 5
s3.getSignedUrl('getObject', {
Bucket: bucket,
Key: key,
Expires: signedUrlExpireSeconds
}, function(err, url) {
if (err) return err
else {
console.log(url); //url prints perfectly
callback(url);
}
})
}
Функция выше работает правильно и регистрирует URL, но не передает URL функции вызывающей стороны.
Вызывающая функция выглядит следующим образом
var S3 = require("./s3");
router.post('/get_prifile_pic_upload_presigned_url', passport.authenticate('jwt', {session: false}), authRole, function(req,res, next) {
S3.getPreSignedurl(req.body.filename, function(err, data) {
if (err) return (err);
else {
//cannot get url from here
return res.json({
success: true,
msg: 'presigned',
obj:data
});
}
});
});
Я не могу получить подписанный внутренний URL из этой функции. кто-нибудь может мне помочь?