微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

nodejs javascript承诺解决

如何解决nodejs javascript承诺解决

我似乎不知道如何保存 SomeQuery 承诺的结果。本质上,我想获取 res 中的值并将其通过管道传输到 parseQuery 函数并返回最终结果。如何让 API 响应可以访问解析结果。

const neo4j = require('neo4j-driver')
var parser = require('parse-neo4j')
const astria_queries = require('./astriaQueries')

const uri = 'bolt://astria_graph:7687'
const user = 'xxx'
const password = 'xxx'

const someQuery = (query) => {
  //   run statement in a transaction
  const driver = neo4j.driver(uri,neo4j.auth.basic(user,password))
  const session = driver.session({ defaultAccessMode: neo4j.session.READ })
  const tx = session.beginTransaction()

  tx.run(query)
    .then((res) => {
      // Everything is OK,the transaction will be committed
      parseQuery(res)
    })
    .then(() => {
      // Everything is OK,the transaction will be committed
    })
    .catch((e) => {
      // The transaction will be rolled back,Now handle the error.
      console.log(e)
    })
    .finally(() => {
      session.close()
      driver.close()
    })
}

const parseQuery = (result) => {
  try {
    const test = parser.parse(result)
    console.log(test)
  } catch (err) {
    console.log(err)
  }
}

module.exports = {
  someQuery,}

解决方法

它终于吸引了我。这是我想出的解决方案。希望它会帮助其他人。如果有更好的方法请告诉我。谢谢@fbiville 的帮助。

异步操作

const neo4j = require('neo4j-driver')
var parser = require('parse-neo4j')
const astria_queries = require('./astriaQueries')

const uri = 'bolt://astria_graph:7687'
const user = 'neo4j'
const password = 'neo'

async function getRecords(query) {
  //   run statement in a transaction
  const driver = neo4j.driver(uri,neo4j.auth.basic(user,password))
  const session = driver.session({ defaultAccessMode: neo4j.session.READ })
  const tx = session.beginTransaction()
  try {
    const records = await tx.run(query)
    const parseRecords = await parseQuery(records)
    return parseRecords
  } catch (error) {
    console.log(error)
  } finally {
    session.close()
    driver.close()
  }
}

async function parseQuery(result) {
  try {
    const parsedRes = await parser.parse(result)
    // console.log(parsedRes)
    return parsedRes
  } catch (err) {
    console.log(err)
  }
}

// getRecords(astria_queries.get_data_sources)

module.exports = {
  getRecords,}

api send()

exports.get_data_sources = async (req,res) => {
  try {
    queryFuns.getRecords(astria_queries.get_data_sources).then((response) => {
      res.send(response)
    })
  } catch (error) {
    res.status(500).send(error)
    console.log(error)
  }
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。