我试图在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();
}
答案 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});
});
});