2017-11-20 12 views
0

mongodbのダミーデータを作成する必要があります。データの一部は、まずbase64に変換してから表示する必要があるピクチャです。ここで関数から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」を渡すことができます私のコントローラのですか?

私は変数に関数の値を設定しようとしましたし、それを渡す...しかし、私はそれを手に入れた変数

答えて

0

として結果を設定していどんなに未定義取得んしました。 同期を使用してください:

 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. 
    } 
    ]; 
関連する問題