2012-09-21 61 views
0

服務器端:查詢MongoDB(通過MongooseJS)並將結果保存在Javascript變量中?

var test; 

UserModel.findOne({name: 'guest'}, function(err, user) { 
    test = user.name; 
}); 

console.log(test); 

這是行不通的。 「測試」的值不會記錄在控制檯中。在「UserModel.findOne」回調函數中移動console.log可以工作。

問題

我如何得到「user.name」我的數據庫,併成爲一個變量?

其他細節

我爲什麼這樣做的原因是因爲我想用貓鼬像這樣NowJS(抓住從MongoDB的一些細節,用NowJS等發送到客戶端):

nowjs.on('connect', function() { 

    var test; 

    UserModel.findOne({name: 'guest'}, function(err, user) { 
      test = user.name; 
      }); 

    this.now.receiveMessage(test); 
}); 

但這嚴格來說不是關於NowJS的問題。

+0

現在回想起來,我可能不應該這樣做。我應該從數據庫中檢索所有信息,將其放入服務器端數組/對象中,然後將該數組/對象中的信息傳遞給客戶端,而不是在用戶詢問信息時進行數據庫查詢。但是,由於學習的原因,我仍然很想知道如何完成這項工作。 – Legendre

回答

1

你不得不把NowJS回調內部調用:

var now = this.now; 
UserModel.findOne({name: 'guest'}, function(err, user) { 
    now.receiveMessage(user.name); 
}); 
+0

* facepalm *是的。我怎麼能忘記。謝謝! :) – Legendre

相關問題