Tôi đang sử dụng mô-đun khôi phục node.js. Tôi có một API REST để xuất kết quả của một truy vấn MySQL đơn lẻ trong json. Đây là mã của API;Kết hợp đầu ra của 2 truy vấn trong REST API
var rest_api_get_list = function (app, url_name) {
function respond(req, res, next) {
var door_mac = req.query.door_mac;
var connection = own_mysql.getMySQL_connection();
var query_str =
"SELECT doors.mac_addr, " +
"sensors.sensor_type " +
"FROM sensors " +
"WHERE (doors.mac_addr = ?) "
;
var query_var = [door_mac];
var query = connection.query(query_str, query_var, function (err, rows, fields) {
//if (err) throw err;
if (err) {
//throw err;
console.log(err);
logger.info(err);
}
else {
res.send(rows);
}
});
return next();
}
app.get(url_name, respond);
};
Giả sử tôi có một truy vấn trông giống như thế này;
var query_str_2 =
"SELECT knobs.mac_addr, " +
"furniture.furniture_type " +
"FROM furnitures" +
"WHERE (knobs.mac_addr = ?) "
;
Tôi muốn kết hợp đầu ra của 2 MySQL truy vấn query_str
và query_str_2
và có REST API trả về kết quả trong json. Điều này có thể giải quyết như thế nào?
Để rõ ràng hơn, tôi đang nghĩ đến mã làm một việc như thế này;
var rest_api_get_list = function (app, url_name) {
function respond(req, res, next) {
var door_mac = req.query.door_mac;
var connection = own_mysql.getMySQL_connection();
var query_str =
"SELECT doors.mac_addr, " +
"sensors.sensor_type " +
"FROM sensors " +
"WHERE (doors.mac_addr = ?) "
;
var query_var = [door_mac];
var query = connection.query(query_str, query_var, function (err, rows_output_1, fields) {
//if (err) throw err;
});
var query_str_2 =
"SELECT knobs.mac_addr, " +
"furniture.furniture_type " +
"FROM furnitures" +
"WHERE (knobs.mac_addr = ?) "
;
var query_2 = connection.query(query_str_2, query_var, function (err, rows_output_2, fields) {
//if (err) throw err;
});
//How to display json output of rows_output_1 and rows_output_2?
return next();
}
app.get(url_name, respond);
};
EDIT: Tôi bắt đầu một tiền thưởng để thu hút câu trả lời sử dụng Lời hứa.
Bạn đang hỏi cách thực hiện hai truy vấn hoặc bạn có thực sự đặt câu hỏi SQL về cách tham gia không? – HeadCode
HeadCode, Xin lỗi vì không rõ ràng. Đây không phải là một câu hỏi SQL. Tôi hỏi làm thế nào để làm 2 truy vấn và trả về kết quả kết hợp của 2 truy vấn trong json. Tôi đã chỉnh sửa câu hỏi để làm cho nó rõ ràng hơn. Cảm ơn bạn. –
Phần khó khăn cho vấn đề này là bản chất không đồng bộ của node.js. Các truy vấn không thể chạy cái này sau cái kia. Nó sẽ rất thú vị để xem cách Promises hoặc các mô-đun như bluebird được sử dụng để trả lời câu hỏi này. – user781486