Javascript Node.js在数组中插入数组的Neo4j
我正在尝试使用node.js在Neo4j数据库中创建一些节点和连接。我正在搞乱一些教程并试图修改它们。我是个不速之客。在这种情况下,我需要解析一组对象来填充数据库。在每个对象中,都有经验数组。我不断地犯错误 未经处理的拒绝承诺。此错误源于 在没有catch块的异步函数内部,或通过拒绝 没有处理的承诺。抓住 我认为错误与循环经验有关。这是循环中的循环。我不知道我怎样才能克服这个问题Javascript Node.js在数组中插入数组的Neo4j,javascript,node.js,neo4j,Javascript,Node.js,Neo4j,我正在尝试使用node.js在Neo4j数据库中创建一些节点和连接。我正在搞乱一些教程并试图修改它们。我是个不速之客。在这种情况下,我需要解析一组对象来填充数据库。在每个对象中,都有经验数组。我不断地犯错误 未经处理的拒绝承诺。此错误源于 在没有catch块的异步函数内部,或通过拒绝 没有处理的承诺。抓住 我认为错误与循环经验有关。这是循环中的循环。我不知道我怎样才能克服这个问题 // Create a person node function addPerson(tx, name) { r
// Create a person node
function addPerson(tx, name) {
return tx.run("MERGE (a:Person {name: $name})", { name: name });
}
// Create a position node
async function addPosition(tx, name) {
return tx.run("CREATE (a:Position {name: $name})", { name: name });
}
// Create an employment relationship to a pre-existing Person node.
// This relies on the person first having been created.
function addPositionConnection(tx, personName, positionTitle) {
return tx.run(
"MATCH (person:Person {name: $personName}) " + "MATCH (position:Position {name: $positionTitle}) " + "CREATE (person)-[:HAS_POSITION]->(position)",
{
personName: personName,
positionTitle: positionTitle
}
);
}
(async function neo4jInsertData() {
try {
const profiles = [
{
userProfile: {
fullName: "Test name 1"
},
experiences: [
{
title: "CEO"
}
]
},
{
userProfile: {
fullName: "Test name 2"
},
experiences: [
{
title: "CTO"
}
]
}
];
for (var x = 0; x < profiles.length; x++) {
const name = profiles[x].userProfile.fullName;
const experiences = profiles[x].experiences;
const session1 = driver.session(neo4j.WRITE);
const first = session1
.writeTransaction(tx => addPerson(tx, name))
.then(tx => {
try {
experiences.forEach((tx, experience, index) => {
addPosition(tx, experience.title).then(() => addPositionConnection(tx, name, experience.title));
});
} catch (err) {
console.log("err", err);
}
})
.then(() => {
console.log("closing");
return session1.close();
});
}
} catch (err) {
console.log("there is an error", err);
}
})();
addPosition函数用async注释,因此addPosition将返回一个承诺,该承诺可能会被异步拒绝,例如,如果其tx.run调用引发异常
您得到的错误消息是,您的addPosition调用返回的包含then块的承诺被拒绝,但由于该承诺没有catch块,因此无法处理拒绝
解决此问题的一种方法是使用wait注释addPosition调用,这将把任何承诺拒绝转换为抛出的异常