2017-09-19 11 views
0

私はこれを1日前から検索していましたが、基本的には期待していません。 私は外部の.jsファイル内の文字列としてインポートできるように、クエリ結果を文字列(つまり、dataString)にエクスポートするだけです。クエリ結果をjs変数(JavaScript)に変換する方法

module.exports.getKlanten = function(req, res){ 
console.log("zoekt naar klanten"); 
pool.connect(function(err, client, done){ 
    if(err){ 
     return console.error('error fetching client from pool', err); 
    } 
    client.query("select * from abc.relations limit 5", function(err,result){ 
     done(); 
     if(err){ 
      return console.error('error running query', err); 
     }    
     var dataString = JSON.stringify(result.rows); 
     var count = Object.keys(result.rows).length; 

     var klanten = result.rows; 

     res 
     .status(200)    
     .render("index", {dataString: dataString, klant: klanten, count: count});   

    console.log("done"); 
    })   
}); 

}

そして私は、文字列をインポートするためのjsファイルに何をすべきかを持っているでしょうか?それはとても簡単に見えますが、私はそれを正しいものにすることはできません。

答えて

0

それはこの

module.exports.getKlanten = function(req, res){ 
console.log("zoekt naar klanten"); 
return "Hello world"; } 

してから外部の.jsファイルで、あなたはこの

const myModule = require('./JSFile'); 

のようにそれをインポートすることができ、この

console.log(myModule.getKlanten()); 
のようにそれを使用するようなものになるだろう

また、return文を使用すると、変数に文字列が含まれます。

+0

おかげハッサンが、私はすでに試したと私はdataStringを返却しようとすると、それが有効ではありません。おそらくそれはクエリ要求に「つぶれている」ため、その外では使用できない可能性があります。それに対する解決策はありますか? – reitnellop

+0

@reitnellop pool.connectの前に変数を作成し、結果を取得したら、この変数をdataStringに代入してください。このようにして、その範囲は機能的に広がります。 –

+0

私はしましたが、結果もありませんでした:(。 – reitnellop

0

私はあなたが他のどこかで外部と同じ機能を使用する必要があると仮定しています。また、httpハンドラのために3つのファイルに分割します。

//getKlanten.js 
 
module.exports.getKlanten = function(){ 
 
    return new Promise(function (resolve, reject) { 
 
     pool.connect(function(err, client, done){//make sure pool is avialble here 
 
      if(err){ 
 
      console.error('error fetching client from pool', err); 
 
      reject(err); 
 
      } 
 
      client.query("select * from abc.relations limit 5", function(err,result){ 
 
       if(err){ 
 
        console.error('error running query', err); 
 
        reject(error); 
 
       }    
 
       var dataString = JSON.stringify(result.rows); 
 
       var count = Object.keys(result.rows).length; 
 
       var klanten = result.rows; 
 
     
 
       var data = {dataString: dataString, klant: klanten, count: count}  
 
       resolve(data); 
 
      })   
 
     }); 
 
    }) 
 
} 
 

 
//in external.JS 
 
var getKlanten = require('getKlanten'); 
 
getKlanten().then(function(object) { 
 
    console.log(object); 
 
}, function(err){ 
 
    console.log(err); 
 
}) 
 

 
//in http handler file 
 

 
var getKlanten = require('getKlanten'); 
 

 
module.exports = function(req,res) { 
 
    getKlanten().then(function(data) { 
 
     res 
 
     .status(200)    
 
     .render("index", data); 
 
    }); 
 
}

+0

ありがとう。しかし、必要なのはdataStringという文字列です:/ – reitnellop

+0

それから、resolve(datastring)を使ってresolve(data) –

関連する問題