Vì node.js là không chặn và không đồng bộ, nên trong mã này:
client.query("SELECT * FROM users", function (error, results, fields) {
if (error) {
//
}
if (results.length > 0) {
self.users = results;
}
});
console.log(this.users);
dữ liệu từ DB có thể chưa được tải vào biến người dùng khi bạn đang cố gắng đăng nhập vào bảng điều khiển. Bạn có thể kiểm tra nếu thực hiện console.log
hoạt động trong truy vấn, ví dụ:
client.query("SELECT * FROM users", function (error, results, fields) {
if (error) {
//
}
if (results.length > 0) {
console.log(results);
}
});
Để chuyển kết quả vào một biến khi thao tác kết thúc, bạn có thể bọc lệnh gọi DB máy khách của mình thành một hàm có tham số gọi lại và đặt biến của bạn khi lệnh gọi lại được gọi, ví dụ:
function query(sql, callback) {
client.query(sql, function (error, results, fields) {
if (error) {
//
}
if (results.length > 0) {
callback(results);
}
});
}
query("SELECT * FROM users", function(results) {
self.users = results;
console.log(self.users);
});
Đoạn mã trên chỉ là một khái niệm.