Я хочу использовать NodeJS для чтения 60 тыс. записей из базы данных MySQL и записи их в базу данных ArangoDB. Позже я буду использовать функции агрегации ArangoDB и т. д. для обработки моего набора данных.
Исходя из PHP, где скрипт обычно выполняется синхронно, и поскольку я считаю, что здесь это имеет смысл, моя первоначальная (наивная) попытка заключалась в том, чтобы мой скрипт NodeJS также выполнялся синхронно. Однако это не работает так, как ожидалось:
Я печатаю на консоль, вызываю функцию через .sync()
для подключения к серверу ArangoDB и печатаю все существующие базы данных, затем снова печатаю на консоль. Но все, что находится ниже вызова синхронизации для моей функции ArangoDB, полностью игнорируется (не выводится снова на консоль и, похоже, здесь ничего не выполняется).
Что я упускаю из виду? .done()
в функции, вызываемой через .sync()
, вызывает проблемы?
var mysql = require('node-mysql');
var arango = require('arangojs');
//var sync = require('node-sync'); // Wrong one!
var sync = require('sync');
function test_arango_query() {
var db = arango.Connection("http://localhost:8529");
db.database.list().done(function(res) {
console.log("Databases: %j", res);
});
return "something?";
}
sync(function() {
console.log("sync?");
var result = test_arango_query.sync();
console.log("done."); // DOES NOT PRINT, NEVER EXECUTED?!
return result;
}, function(err, result) {
if (err) console.error(err);
console.log(result);
});