私は可能なすべての解決策を試しています。 global
を使用するか、bind
を使用しますが、グローバル変数にはアクセスできません。ここに私のコードはのnodejs
に私の.js
ファイルを生成しようとしています。ノード内のグローバル変数
module.exports = function (portal) {
var mongoose = require('mongoose');
var News = mongoose.model('News');
var urls ="";
var gensitemap = function(){
urls = "abc";
console.log(urls);// print abc as expected
News.find().exec(function (err, news) {
news.forEach(function (t) {
urls += "<url><loc>"+cdn_url+"/news"+t.slug+"</loc>"+"</url>";
});
});
console.log(urls);// print still abc as not expected it should be change
}
var allUsers = portal.setupContext({});
app.get('/gensitemap',allUsers ,gensitemap);
};
ここで私はその同じ出力を印刷しているURL beforとNews.find()
後method.but代わりに変更のurl
変数を使用して見ることができます。
私は既にglobal
またはasync.parallel({})
を試していますが、News.find()
で同じ問題が発生すると、その変数は別のものとして扱われます。
助けが必要ですか?
はUPDATE:
コメントと言及質問のいくつかを読んだ後、私はまた、私は変更を見ることができていますいくつかの時間を待った後に気づくこの
Events.find().exec(function (err1, events) {
events.forEach(function (t1) {
url += "<url><loc>"+cdn_url+"/event"+t1.slug+"</loc>"+changefreq+priority+"</url>";
});
News.find().exec(function (err2, news) {
news.forEach(function (t2) {
url += "<url><loc>"+cdn_url+"/news"+t2.slug+"</loc>"+changefreq+priority+"</url>";
});
var static_urls = ['about-us','categories','overview','media','contact-us','login','register','pages/en/faq'];
for(var i = 0 ;i < static_urls.length;i++){
url += "<url><loc>"+"http://192.168.10.38:3000/"+static_urls[i]+"</loc>"+"<changefreq>weekly</changefreq>"+"<priority>1</priority>"+"</url>";
}
console.log(url);
//this url(variable) print only the changes i made in above for loop.. :-(
});
});
を試みるが、そうではありません同じ順序で。
可能性のある重複した[非同期呼び出しからの応答を返すには?](https://stackoverflow.com/questions/14220321/how-to-return-the-response-from-an-asynchronous-コール) – baao
このリンクを参照してくださいとslove qution; https://stackoverflow.com/questions/10987444/how-to-use-global-variable-in-node-js –
しかし、私の変数は同じファイルにあります。@DharmikUnagar –