typescript - 如何在 Neo4j 中将结果值从一个语句传递到另一个语句
问题描述
我有下面的代码,它运行多个语句,第一个语句应该返回一个由第二个语句使用的结果,它是来自android app的调用。
return session.writeTransaction(wrte=>{
let r : any
if(context.auth){
//This Statement returns ID of the node
wrte.run('MATCH (p:Person{identity:{identity}}) CREATE (p)-[po:POST]->(a:Post{post:{post},userName:{userName}}) RETURN ID(a)',
{identity: context.auth.uid, post: data.post, userName: context.auth.token.name })
}
return r as neo4j.v1.StatementResult
})
//how to get the ID from the Last Statement
.then((val) => session.readTransaction(read => {
console.log(val.records[0].get(0))
return read.run('MATCH (p:Post) WHERE id(p) = {any} RETURN p',{any: val.records[0].get(0)})
}))
.then(result => {
session.close();
driver.close()
console.log(result)
var singleRecord = result.records[0]
var dat = singleRecord.get(0)
if(result.records[0] == null){
return null
} else {
return {
"post": dat.properties.post,
"userName":dat.properties.userName,
}
}
}).catch(error => {
session.close()
console.log(error)
driver.close()
throw new functions.https.HttpsError(error,"some error");
})
});
console.log(val.records[0].get(0))
返回未定义,如何正确传递结果以及如何检索 ID?
解决方案
我只需要return
每笔交易
代码:
return session.writeTransaction(wrte=>{
let r : any
if(context.auth){
r = wrte.run('MATCH (p:Person{identity:{identity}}) CREATE (p)-[po:POST]->(a:Post{post:{post},userName:{userName}}) RETURN ID(a) AS id',
{identity: context.auth.uid, post: data.post, userName: context.auth.token.name })
}
return r as neo4j.v1.StatementResult
}
)
.then((r) => {
return session.readTransaction(tx =>
tx.run('MATCH (p:Post) WHERE id(p) = {v} RETURN p',{v: r.records[0].get(0)})
)
.then(result => {
session.close();
driver.close()
var singleRecord = result.records[0]
var dat = singleRecord.get(0)
if(result.records[0] == null){
return null
//response.send(false)
} else {
return {
"post": dat.properties.post,
"dateTime":dat.properties.dateTime
}
//response.send(true)
}
}).catch(error => {
session.close()
console.log(error)
driver.close()
throw new functions.https.HttpsError(error,"some error");
})
})
}
)
推荐阅读
- android - Flutter 中的控制台消息
- python - Python Pandas - 检查两列中的值,对第三列求和
- ansible - 无法将多行字符串(私有 ssh 密钥)存储为 ansible 中的变量
- aws-marketplace - 在 AWS 市场上销售 ISO
- gnuplot - 从 whitin gnuplot 脚本将变量传递给 shell 命令
- jenkins - 如何解析 HTML 电报消息中的信息?
- docker - 检查是否在之前的 docker 层中设置了 ENTRYPOINT
- react-bootstrap - 尝试导入错误:“react-bootstrap”不包含默认导出
- react-native - React Native,部署环境
- c# - 使用 C# 根据某些参数过滤我的 Excel 数据文件