我不得不承认我感到有点失落,因为我不是一个专业的 javascript 程序员。
我想查询我的 neo4j 数据库,以便将来自简单查询(如
)的数据的类似 json 的结构存储在变量中MATCH (a:VarA)-->(b:VarB) RETURN a.var1 as one, a.var2 as two, b.var3 as three, b.var4 as four;
所以我写了一些简单的代码,例如:
var driver = neo4j.driver(
'BOLT PATH',
neo4j.auth.basic('MYUSER', 'MYPASS'),
{ disableLosslessIntegers: true }
);
var session = driver.session({ defaultAccessMode: neo4j.session.WRITE });
session
.run("MYCYPHERQUERY")
.then(r => {
results = r.records.map(d => d.toObject());
data = JSON.stringify(results);
session.close();
console.log(data);
})
.catch(error => {
results = [];
console.log(error);
})
但是,我想我陷入了这个异步函数,就像我添加了
console.log(数据);
在代码之后,它返回一个空数组,而 .then block 中的数组在之后触发并返回正确的 json 文件。
然而,这阻止了我,因为我想将此对象传递给下一个函数,但这不起作用。
如何添加一个选项以等待结果存储在数据变量中然后再继续?
最佳答案
Result.then方法返回 Javascript Promise ,你应该了解一下。
(异步)将结果
(或错误)传递给您的next()
函数(您必须编写)的最简单方法可能是:来自现有 then
的 结果
,并在现有调用之后链接另一个 then
调用:
session
.run("MYCYPHERQUERY")
.then(r => {
const results = r.records.map(d => d.toObject()); // results can be local
data = JSON.stringify(results);
session.close();
console.log(data);
return results;
})
.then(r => {
next(null, r);
})
.catch(error => {
console.log(error);
next(error);
})
在上面的示例中,next()
将错误(或 null
)作为第一个参数,以及结果(或 undefined
)作为第二个参数。
关于javascript - Neo4J Javascript 驱动程序无法将读取的数据传递给对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60372310/