我有一个neo4j服务器在docker上运行,我正在尝试使用普通的javascript对这个服务器执行一些查询,运行在一个html文件中,我想得到的是在一个全局变量中使用查询结果。
使用此变量,我想更新一些<select>
选项。
返回的查询值如下所示:
{
"type_A" : {
"Sub Assembly" : [
[ "B.1", "descrizione per B.1", 0 ],
[ "B.2", "descrizione per B.2", 1 ],
[ "B.3", "descrizione per B.3", 2 ]
],
"Component" : [
[ "B.1.1", "descrizione per B.1.1", 3 ],
[ "B.2.1.1", "descrizione per B.2.1.1", 6 ]
],
"Assembly" : [
[ "A", "descrizione per A", 12 ],
[ "B", "descrizione per B", 26 ]
]
},
"type_B" : {
"Sub Assembly" : [
[ "C.1", "descrizione per C.1", 8 ],
[ "C.2", "descrizione per C.2", 9 ],
[ "C.3", "descrizione per C.3", 10 ]
],
"Assembly" : [
[ "C", "descrizione per C", 7 ]
]
}
}
第一个<select>
将有type_A和type_B作为选项,第二个将有例如Sub Assembly、Assembly、Component(如果我在第一个选择中选择type_A)。根据所做的选择,我将用相应的数组内容填充列表。
我能够执行查询,但现在我在如何使用查询响应方面遇到了麻烦。
我所尝试的是(查询是一个示例,而不是我使用的)
<script type="text/javascript">
// define our fetch functions, and handle our async promises
const driver = neo4j.driver('locahost', neo4j.auth.basic('user', 'password'))
const session = driver.session()
async function getNodes() {
session
.run('MATCH (n) RETURN n.code AS code')
.then(results => {
const output = []
results.records.forEach(res => {
output.push(res.get('code'))
})
console.log(output)
return output
})
.catch(error => {
throw error;
})
.finally(() => {
session.close();
});
}
var out = getNodes().then(res => {
return res
})
console.log(out)
</script>
作为console.log,我得到
Promise {<pending>}
[[Prototype]]:Promise
[[PromiseState]]: "fulfilled"
[[PromiseResult]]: undefined
我想使用一个全局变量,这样我只需要向服务器发出一个请求,就可以获得“准备”DOM所需的所有初步信息,并管理两个<select>
change事件。
这是管理“问题”的正确方法吗?
任何帮助都将不胜感激!
1条答案
按热度按时间noj0wjuj1#
在这段代码中:
您的函数getNodes()返回 nothing。在嵌套的promise中有返回值,但实际的函数不返回任何值。您可能需要在“session”之前放置“return”。