neo4j 节点console. log/ res.render两个不同的数据源/类型

hmtdttj4  于 2022-11-05  发布在  其他
关注(0)|答案(1)|浏览(206)

最后,我尝试在一个页面上获得两个不同的data调用res.render。在这个过程中,我使用console.log来查看数据是否最终可以从res.render发送到页面。5个console.logs中有1个不起作用,#4,我不明白为什么。
这是我所拥有的...server.js代码

  1. const uri = 'neo4j address';
  2. const user = 'uname';
  3. const password = 'pword'
  4. const driver = neo4j.driver(uri, neo4j.auth.basic(user, password));
  5. const session = driver.session({ database: 'dbname' });
  6. app.get('/page', async (req, res) => {
  7. try {
  8. const dbTitleResult = await session.run(`MATCH (db:Database)
  9. RETURN db.wikiPageId as dbWikiPageId, db.Title as dbTitle Order By db.Title ASC`);
  10. const dbTitleArr = dbTitleResult.records.map(({_fields}) => {
  11. return {dbWikiPageId:_fields[0],dbTitle:_fields[1]};
  12. });
  13. const wikiPage = request('https://uname:pword!@wiki.com/api/content/id/child?expand=page', function (error, response, body) {
  14. if (error) throw new Error(error);
  15. const wikiAPI = JSON.parse(body);
  16. //console.log(wikiAPI.page.results); //#1 THIS WORKS AND RETURNS THE EXPECTED DATA
  17. const wikiData = wikiAPI.page.results.map(item => item);
  18. //console.log(wikiData); //#2 THIS WORKS AND RETURNS THE EXPECTED DATA
  19. });
  20. //console.log(dbTitleArr); //#3 THIS WORKS AND RETURNS THE EXPECTED DATA
  21. //console.log(wikiData); //#4 THIS DOES NOT WORK
  22. res.render('page.ejs', {dbTitle: dbTitleArr});
  23. //console.log(dbTitleArr); //#5 THIS WORKS AND RETURNS THE EXPECTED DATA
  24. } catch(e) {
  25. console.log("Something went wrong", e) }
  26. });

这就是我需要帮助的地方,console.log #3是成功的,但console.log #4不是。console.log #4给出了Something went wrong ReferenceError: wikiData is not defined的错误。但它的定义方式似乎与dbTitleArr的定义方式相同?我如何使#4成为console.log可记录的?或者为什么它不是像#3那样的console.log可记录的?
为了实际使用返回的数据,我可以res.render dbTitleArr数据(我可以在page.ejs上查看它),我不能res.render wikiData数据。我需要做什么来查看#4 console.log wikiData并最终res.render它?

yr9zkbsy

yr9zkbsy1#

我能够最终res.render两组数据,但#4 console.log仍然不工作。我意识到这是最初的问题,为什么它不工作,所以我会提供其他人的答案点,如果他们可以解释为什么#3工作,但#4不...
我需要做的是将我的res.render移到请求代码中(并且我还删除了请求前面的const wikiPage)。

  1. app.get('/page', async (req, res) => {
  2. try {
  3. const dbTitleResult = await session.run(`MATCH (db:Database)
  4. RETURN db.wikiPageId as dbWikiPageId, db.Title as dbTitle Order By db.Title ASC`);
  5. const dbTitleArr = dbTitleResult.records.map(({_fields}) => {
  6. return {dbWikiPageId:_fields[0],dbTitle:_fields[1]};
  7. });
  8. request('https://uname:pword!@wiki.com/api/content/id/child?expand=page', function (error, response, body) {
  9. if (error) throw new Error(error);
  10. const confluenceAPI = JSON.parse(body);
  11. //console.log(confluenceAPI.page.results); //#1 WORKS
  12. const wikiData = confluenceAPI.page.results.map(item => item);
  13. //console.log(wikiData); //#2 WORKS
  14. res.render('page.ejs', {dbTitle: dbTitleArr, wikiData});
  15. });
  16. //console.log(dbTitleArr); //#3 WORKS
  17. //console.log(wikiData); //#4 STILL DOES NOT WORK, BUT OK SINCE IT RENDERS
  18. } catch(e) {
  19. console.log("Something went wrong", e)
  20. }
  21. });
展开查看全部

相关问题