使用Firebase和Node.js的回调问题

时间:2018-07-30 14:08:32

标签: node.js firebase google-cloud-storage firebase-storage

我试图在Cloud Storage中获取图像的signedURL,并将其返回到node.js服务器的post方法。

但是返回的值总是变成不确定的。请参考代码。

非常感谢您的帮助。

router.post('/', upload.single('file'), function(req, res) {
    var sign;
   var signedFinal = getUrl('cpu2.png',function(){
        console.log("hello" +signedFinal);
    });



function getUrl(image, callback){
        const file = bucket.file(image);
        const action = 'read';
        const expires = '03-09-2491';
        file.getSignedUrl({action:"read", expires}).then(function(url){
            sign=url[0];
            return url[0];
        }).catch(function (error) {
            {
                console.log(err);
            }
        });
    callback();
}

1 个答案:

答案 0 :(得分:1)

具有异步功能的元素/结果必须在回调中返回:

https://blog.risingstack.com/node-hero-async-programming-in-node-js/

function getUrl(image, callback){
        const file = bucket.file(image);
        const action = 'read';
        const expires = '03-09-2491';
        file.getSignedUrl({action:"read", expires}).then(function(url){
            sign=url[0];
            return callback(url[0]);

        }).catch(function (error) {

           return callback(null);

        });

}

router.post('/', upload.single('file'), function(req, res) {

    getUrl('cpu2.png',function(signedFinal){
        console.log("hello" +signedFinal);

        // do something here
        return res.status(200).json({img: signedFinal});
    });

});