Я делаю проект системы мониторинга, в котором данные датчиков Arduino отправляются на сервер node.js (через запросы GET), а затем сохраняются в базе данных MySQL.
Всякий раз, когда я успешно отправляю данные на сервер, он подключается к базе данных MySQL и запрашивает последние 5 полученных записей, чтобы выполнить некоторую обработку.
Поэтому мне нужно сохранить строки этих 5 записей в переменной для последующего использования. Это означает, что я должен получить строки из connection.query в переменной.
Я читал, что тот факт, что я не могу этого сделать, связан с тем, что node.js является асинхронным. Итак, мои вопросы:
- Можно ли выполнить описанные задачи так, как я пытаюсь?
- Если нет, то есть ли другой способ сделать это?
Я не помещаю сюда весь код, но запускаю отдельный тест, который также работает неправильно. Вот:
var mysql = require('mysql');
var con = mysql.createConnection({
host : "127.0.0.1",
user : "root",
password: "xxxx",
database: "mydb",
port : 3306
});
var queryString = "SELECT id, temp1, temp2, temp3, temp4, level_ice_bank, flow FROM tempdata ORDER BY id DESC LIMIT 5";
con.connect(function(err) {
if (err) throw err;
});
var result_arr = [];
function setValue (value) {
result_arr = value;
}
con.query(queryString, function (err, rows, fields) {
if (err) throw err;
else {
//console.log(rows);
setValue(rows);
}
});
console.log(result_arr);
Он регистрирует:
[]
Но если я раскомментирую console.log(rows);
, он запишет то, что мне нужно сохранить в переменной result_arr
.
Заранее всем спасибо.
setValues(rows);
произошло раньшеconsole.log(result_arr);
? - person arocha   schedule 06.07.2017