2017-04-24 7 views
0

私はシンプルなデータベースを作成するためのスマートな契約書を書いています。それは私がREST APIの最初の時間を打ったとき、それは私に正しい出力を提供しますが、さらなるヒットで、それはメッセージと共にノードサーバをクラッシュさせ、複数の機能が含まれています -エラー:送信後にヘッダーを設定できません。スマート契約機能を呼び出すことに由来します

F:\project\blockchain\node_modules\solc\soljson.js:1 (function (exports, require, module, __filename, __dirname) { var Module;if(!Module)Module=(typeof Module!=="undefined"?Module:null)||{};var moduleOverrides={};for(var key in Module){if(Module .hasOwnProperty(key)){moduleOverrides[key]=Module[key]}}var ENVIRONMENT_IS_WEB=typeof window==="object";var ENVIRONMENT_IS_WORKER=typeof importScripts==="function";var ENVIRONMENT_IS_NODE=type of process==="object"&&typeof require==="function"&&!ENVIRONMENT_IS_WEB&&!ENVIRONMENT_IS_WORKER;var ENVIRONMENT_IS_SHELL=!ENVIRONMENT_IS_WEB&&!ENVIRONMENT_IS_NODE&&!ENVIRONMENT_IS_WORKER;if(EN VIRONMENT_IS_NODE){if(!Module["print"])Module["print"]=function print(x){process["stdout"].write(x+"\n")};if(!Module["printErr"])Module["printErr"]=function printErr(x){process["stderr"].write (x+"\n")};var nodeFS=require("fs");var nodePath=require("path");Module["read"]=function read(filename,binary){filename=nodePath"normalize";var ret=nodeFS["readFileSync"](file

Error: Can't set headers after they are sent. at ServerResponse.OutgoingMessage.setHeader (_http_outgoing.js:344:11) at ServerResponse.header (F:\project\blockchain\node_modules\express\lib\response.js:725:10) at ServerResponse.send (F:\project\blockchain\node_modules\express\lib\response.js:170:12) at ServerResponse.json (F:\project\blockchain\node_modules\express\lib\response.js:256:15) at F:\project\blockchain\BlockchainDB\users\userFunction.js:37:47 at F:\project\blockchain\node_modules\web3\lib\web3\filter.js:120:21 at Array.forEach (native) at F:\project\blockchain\node_modules\web3\lib\web3\filter.js:119:32 at Array.forEach (native) at Object.onMessage [as callback] (F:\project\blockchain\node_modules\web3\lib\web3\filter.js:117:22)

API

module.exports.creation=function(req,res){ 
var user_id = req.params.user_id || req.body.user_id; 
var currency = req.params.user_id || req.body.currency ; 
if(user_id == undefined || currency == undefined){ 
    res.status(500).json({status:false,errors:"Empty parameters"}); 
}else{ 
    isaccount().then(function(accountNumber){ 
    if(accountNumber!=null){ 
     var timestamp = Date.now(); 
     var result = contract.createUser.sendTransaction(user_id,currency,accountNumber,timestamp,{from:web3.eth.coinbase,gas:600000}); 
     var event = contract.CreatedUser(function(error, result) { 
       if (!error){ 
        if(result.args.userId!= undefined && result.args.accountId!= undefined && result.args.categoryId!= undefined){ 
          logger.info("user created with id :"+result); 
          res.status(200).json({status:true,data:{iduser:result.args.userId,accountId:result.args.accountId,created_at:timestamp}}); 
        }else{ 
         logger.info("user creation have problem :"); 
         res.status(500).json({status:false,errors:"no response"}); 
         } 
       }else{ 
        logger.error(error); 
        res.status(500).send(false); 
       } 
      }); 
    }else{ 
     logger.debug("Problem in accountNumber generation"); 
     res.status(500).send(false); 
    } 
     }); 
} 

のための私のコード}

事前に私はこの問題を解決するために助けてください

おかげ

答えて

0

res.status()すべての通話についてreturnステートメントを試してみてください。だから、レスポンスの状態が何かに設定されても、res.status()の後のどこかで再びそれが得られます。

関連する問題