0
我想從數據庫中使用nodejs獲取記錄的數量,但問題是由於同步請求,我無法打印它們。當我嘗試在函數內部打印它時,它打印的很好,但是在函數之外,它沒有。我知道這是由於JS的同步行爲,但我想這樣做(可能是異步)。我對Javascript和nodejs非常陌生,所以請指導我如何做到這一點。這裏是代碼。NodeJS同步調用
router.post('/numofrecs', function(req, res) {
var db = new Db('nmydb', new Server('localhost', '27017'));
db.open(function (err, db) {
db.authenticate('', '', function (err, result) {
var url = 'mongodb://localhost:27017/nmydb';
client.connect(url, function (err, db) {
que = new Array();
var questioncol = db.collection('allquestions');
questioncol.find({}).count(function (err, data) {
rec = data;
console.log("Num of rec:"+rec);
//inside the connect function , it prints fine here
});
console.log('Num of rec:'+ rec);
//but it doesnot print here outside the connect function and just print "undefined"
您的問題是由於您正在使用的數據庫連接器的* asynchronous *性質造成的。除非該連接器提供了同步替代方案,否則您嘗試執行的操作無法完成。 –
真的:(它不能做到) – Despicable
對,所有依賴'rec'的代碼都需要在回調函數中,除非連接器提供了一個同步選項。 –