-1
var mysql = require('mysql');
var con = mysql.createConnection({
host: "localhost",
user: "root",
password: "1111",
database: "crypto"
});
function get_date() {
con.connect(function () {
    con.query("SELECT * FROM btc", function (err, result, fields) {
        var array = [result.length];
        var string = JSON.stringify(result);
        var json = JSON.parse(string);
        for (var i = 0; i < result.length; i++) {
            if (json[i].price != "null") {
                array.push(json[i].price)
            }
        }
        return array
    })
});
}

1 Answers1

0

В функции function get_date() нету return соответственно ничего не возвращает.

  • А как же строчка return array – Никита Петров Aug 08 '18 at 22:36
  • @НикитаПетров , return array находится в функции, которую вы передаёте в виде параметра при вызове метода con.query(), а не в функции get_date, и мне кажется что в данном примере вам лучше использовать callback, – Михаил Ребров Aug 08 '18 at 22:48
  • @НикитаСамоуков, напишите пожалуйста более развернутый ответ. – Михаил Ребров Aug 08 '18 at 22:49
  • Спасибо, сейчас попробую – Никита Петров Aug 08 '18 at 22:52
  • Извините, но все же мне нужно не печатать информацию, а получить массив как отдельной переменной. Как бы мне обратится к анонимной фунции – Никита Петров Aug 08 '18 at 23:02
  • @НикитаПетров, я не работаю с node.js, однако, судя по Вашему примеру вернуть данные Вы не можете поскольку con.query(), не возвращает данные, а принимает функцию обратного вызова и Вам ничего не остаётся кроме того, чтобы обрабатывать данные асинхронно в колбеке. В JS это очень распространенный паттерн. Либо ищите аналог con.query(), который возвращает данные...либо подумайте над тем, тот ли стек технологий Вы выбрали, поскольку само устройство языка JavaScript, вынуждает постоянно использовать колбеки. В JavaScript Вам от них не убежать и Вам придётся так или иначе с ними работать. – Михаил Ребров Aug 08 '18 at 23:14
  • @НикитаПетров, к анонимным функциям вы можете обращаться как к переменным, если Вы предварительно сохраните на них ссылку.Например: сначала "сохраняете функцию в переменную": var test=function(){alert('test');};, а потом вызываете её: test();.Однако в данном случае обращение к анонимной функции Вам также не поможет, потому что вызываете её не Вы. – Михаил Ребров Aug 08 '18 at 23:19
  • @НикитаПетров, насколько помню в JavaScript функция также является объектом. Именно поэтому Вы можете сохранять на них ссылки в переменных и потом вызывать их. – Михаил Ребров Aug 08 '18 at 23:22
  • Спасибо, в java попроще с этим – Никита Петров Aug 08 '18 at 23:35
  • @НикитаПетров, да. Но кому то нравится. На вкус и цвет, как говорится, все фломастеры разные. А если про фронтенд говорить, то ни у кого и выбора нет :)) . В любом случае изучение другого языка с философией, отличной от того что ты знал ранее, обогатит твой внутренний мир и расширит кругозор :-) Ну и с лямбдами в джаве и со scala впоследствии попроще будет :-) – Михаил Ребров Aug 08 '18 at 23:55
  • @МихаилРебров справедливости ради сейчас есть «сахар» в виде async/await и промизов, так что можно писать как бы без колбеков. – Alexey Ten Aug 09 '18 at 10:51
  • @AlexeyTen, не знал. Спасибо. – Михаил Ребров Aug 09 '18 at 15:08