gpt4 book ai didi

node.js - NodeJS 与 arangojs 和同步 : Everything after . 同步()被忽略?

转载 作者:太空宇宙 更新时间:2023-11-03 22:01:18 24 4
gpt4 key购买 nike

我想使用 NodeJS 从 MySQL 数据库读取 60k 记录并将其写入 ArangoDB 数据库。稍后我将使用 ArangoDB 的聚合功能等来处理我的数据集。

来自 PHP,其中脚本通常同步运行,并且因为我相信它在这里有意义,所以我最初(天真的)尝试是让我的 NodeJS 脚本也同步运行。但是,它没有按预期工作:

我打印到控制台,通过 .sync() 调用函数来连接到 ArangoDB 服务器并打印所有现有数据库,然后再次打印到控制台。但是对我的 ArangoDB 函数的同步调用下面的所有内容都被完全忽略(不会再次打印到控制台,也不会在这里执行任何其他操作)。

我忽略了什么?通过 .sync() 调用的函数中的 .done() 是否会造成麻烦?

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);
});

最佳答案

您的函数test_arango_query不使用回调。 sync 仅适用于使用回调的函数。它需要知道数据何时准备好从 .sync() 返回,如果您的函数从不调用回调,则 sync 永远无法返回结果。

更新您的函数以在您希望它返回时调用回调函数:

function test_arango_query(callback) {
var db = arango.Connection("http://localhost:8529");
db.database.list().done(function(res) {
console.log("Databases: %j", res);
callback('something');
});
}

关于node.js - NodeJS 与 arangojs 和同步 : Everything after . 同步()被忽略?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23554322/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com