在带有回调的单独函数中获取AWS getSignedUrl函数的返回值

时间:2018-09-01 23:44:32

标签: javascript node.js amazon-s3 callback aws-sdk-nodejs

我有一个函数可以在单独的javascript文件(s3.js)中获取s3的签名网址。现在,我需要在路由中调用该函数,并将其放置在另一个文件中。 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。有人可以帮我吗?

0 个答案:

没有答案