如何从函数中获取base64值?

时间:2017-11-20 09:59:04

标签: node.js mongodb

我需要为mongodb创建虚拟数据,部分数据是需要首先转换为base64的图片,然后我需要显示它们。

这是我的控制器

    var buffer = require('buffer');
    var path = require('path');
    var fs = require('fs');
    var users_model;

    var PageUsersController = function () {
        users_model = require('../models/users_model');

    }

    module.exports = PageUsersController;

    var pic_binary;
    function encode_base64(filename){
        fs.readFile(path.join(__dirname,'../foo/',filename),function(error,data){
            if(error){
                throw error;
            }else{
                var buf = Buffer.from(data);
                var base64 = buf.toString('base64');
                pic_binary = base64;
                console.log(pic_binary); // returns result.
                return base64;
            }
        });
    }

    encode_base64('user_pic.jpg');


    PageUsersController.getUserDetails = function (cb) {

        var flat_details = [
            {


                user_name: "john",
                user_pic:pic_binary, // always return undefined

            }
        ];
        return cb(null, flat_details);

    }

如何通过mongodb架构传递包含编码结果的变量'pic_binary'?

我试图将函数的值设置为变量然后传递它......但是无论我如何将结果设置为变量

,我都会得到未定义的

1 个答案:

答案 0 :(得分:0)

知道了。 应该使用Synchronized:

     var buff = fs.readFileSync(path.join(__dirname,'../user_pic/','profile_pic.png'));
     var base64data = buff.toString('base64');

     var flat_details = [
    {

        user_pic:base64data , // problem solved.
    }
   ];