简体   繁体   English

Javascript/流变量未定义

[英]Javascript/stream Variable undefined

Here is my code.这是我的代码。 the variable file in the code代码中的变量文件

console.log(JSON.stringify(file));

is undefined.未定义。

const functions = require('firebase-functions');
const admin = require('firebase-admin');
const Buffer = require('buffer').Buffer;
const stream = require('stream');
exports.updateUserInfo = functions.https.onRequest(function(req, res){

    const uid = req.params.uid;
    const name = req.query.name;
    const gender = req.query.gender;
    const birthday = req.query.birthday;
    const base64Image = req.query.profileImage;
    let bufferStream = new stream.PassThrough();
    bufferStream.end(new Buffer.from(base64Image, 'base64'));
    let bucket = admin.storage().bucket();
    let file = bucket.file('user_images/' + uid + '/example.jpg');
    bufferStream.pipe(file.createWriteStream({
      metadata: {
        contentType: 'image/jpeg'
      }
    }))
    .on('error', error => {
      console.log("error", error);
    })
    .on('finish', (file) => {
      console.log(JSON.stringify(file));
    });
})

Stream event finish informs that operation is done, and passes no arguments.流事件finish通知操作已完成,并且不传递任何参数。 See https://nodejs.org/api/stream.html#stream_event_finish .请参阅https://nodejs.org/api/stream.html#stream_event_finish

If you want use file object after operation is done:如果要在操作完成后使用文件对象:

let file = bucket.file('user_images/' + uid + '/example.jpg');
bufferStream.pipe(...)
.on('finish', () => {
  console.log(file);
});

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM