2012-09-11 35 views
5

Tôi đang làm việc trên một dự án NodeJs cho lần đầu tiên. Và bây giờ tôi bị mắc kẹt với hàm trả về các giá trị thông qua JS và nhận các giá trị để sử dụng trong express.chức năng trả về giá trị như không xác định trong nodejs

var dbitems = "before fn"; 
function refreshData(callback) { 
     db.open(function (err, db) { 
      if (!err) { 
       db.collection('emp').find().toArray(function (err, items) { 
        dbitems = items; 
        callback(JSON.stringify(items)); 
       }); 
      } 
      else { 
       console.log("Could not be connnected" + err); 
       dbitems = {"value":"not found"}; 
      } 
     }); 

    } 
} 


refreshData(function (id) { console.log(id); }); 

Chức năng này truy xuất giá trị hoàn hảo từ refreshData và ghi vào bảng điều khiển. Nhưng điều tôi cần là sử dụng giá trị đã truy xuất để gửi tệp html nhanh từ hàm này bằng "returnData"

exports.index = function (req, res) { 
    var valrs = refreshData(function (id) { 
     console.log(JSON.parse(id)); ---this again writes data perfectly in the console 
    }); 
    console.log(valrs); -------------------but again resulting in undefined 
    res.render('index', { title: 'Express test', returnedData: valrs }); 
}; 

Mọi trợ giúp sẽ được đánh giá cao.

Cảm ơn & Trân trọng, May mắn.

Trả lời

5

Bạn cần hiển thị điều này sau khi yêu cầu cơ sở dữ liệu hoàn tất .. vì vậy nó cần phải được gọi từ bên trong cuộc gọi lại.

exports.index = function (req, res) { 
    refreshData(function (id) { 
     res.render('index', { title: 'Express test', returnedData: JSON.parse(id) }); 
    }); 
}; 

không đồng bộ nên bạn không thể chỉ đặt giá trị theo thứ tự, cần phải thực hiện các cuộc gọi lại.

+0

Có bạn đến đây, cảm ơn Agreco. Để trả lời điểm và đánh giá cao như vậy. – Luckyy

Các vấn đề liên quan