首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >从数据库(db.js)返回数据到节点(app.js)的问题

从数据库(db.js)返回数据到节点(app.js)的问题
EN

Stack Overflow用户
提问于 2019-12-01 15:23:33
回答 1查看 26关注 0票数 0

我试图通过post请求从node.js中的postgres数据库请求数据。最终,这些数据将被发送到一个反应前端。我从数据库中获得了正确的数据,但似乎无法将这些数据返回给app.js (我有点像node.js新手)。我有两个文件app.js和db.js

这是app.js

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
const express = require('express');
const morgan = require('morgan');
const helmet = require('helmet');
const cors = require('cors')
const db = require('./db')
const bodyParser = require('body-parser')
const middlewares = require('./middlewares');


const app = express();
app.use(cors());
app.use(morgan('dev'));
app.use(helmet());
// Parse URL-encoded bodies (as sent by HTML forms)
app.use(bodyParser.urlencoded({ extended: false }))
// Parse JSON bodies (as sent by API clients)
app.use(express.json());

app.use((req, res, next) => {
  res.setHeader('Access-Control-Allow-Origin', '*');
  res.setHeader('Access-Control-Allow-Methods', 'GET, POST, OPTIONS, PUT, PATCH, DELETE');
  next();
});

app.get('/api', (req, res) => {
  res.send({ express: 'Server online' });

});

app.post('/layer', (req, res, next) => {
  var layer = req.body.menu;
  var geometry = db.layer(layer);
  console.log(geometry);
  res.set('Content-Type', 'application/json')
  //const body = res.body()
});


app.use(middlewares.notFound);
app.use(middlewares.errorHandler);

module.exports = app;

这是db,js

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
const { Pool, Client } = require('pg')

const connection = new Pool({
    user: 'postgres',
    host: 'localhost',
    database: 'dbtemp',
    password: 'password',
    port: 5432,
    max: 20,
    connectionTimeoutMillis: 2000,
})
connection.connect(function(err) {
    if (err) throw err;
});

connection.on('connect', () => {
console.log("connected to database on port: " );
});

module.exports = { 
    layer: function(layer) { 
        connection.query('SELECT ST_AsGeoJSON(geom) FROM nzta_centrelines', (err, result) => {
            if (err) {
                return console.error('Error executing query', err.stack)
            }
            var geometry = result.rows[0].st_asgeojson;
            console.log(geometry);
            return result;
        })
    }
}

我正在从db.js输出中获取记录到控制台的正确数据:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
Listening: http://localhost:5000
connected to database on port:
Promise { undefined }
connected to database on port:
{"type":"MultiLineString","coordinates":[[[1797202.15,5753380.18,0],[1797200.87,5753384.48,0],[1797198.16,5753393.62,0],[1797197.78,5753404.37,0],[1797200.38,5753428.48,0],[1797217.82,5753566.48,0],[1797225.98,5753623.6,0],[1797227.09,5753645.86,0],[1797225.98,5753665.52,0],[1797223.38,5753684.07,0],[1797213.95,5753717.71,0]]]}

如何将查询结果发送到app.js并发送到网页(响应前端)。我猜数据准备好后还需要回调吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-12-01 15:36:26

您可能想考虑使用承诺或回调。

  1. 允诺方法

db.js

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
...
module.exports = { 
    layer: function(layer) { 
        return new Promise((resolve, reject) => {
            connection.query('SELECT ST_AsGeoJSON(geom) FROM nzta_centrelines', (err, result) => {
                if (err) {
                    console.error('Error executing query', err.stack)
                    return reject(err);
                }
                var geometry = result.rows[0].st_asgeojson;
                console.log(geometry);
                return resolve(result);
            })
        })
    }
}

app.js

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
...
app.post('/layer', async (req, res, next) => {
    var layer = req.body.menu;
    var geometry = await db.layer(layer);
    console.log(geometry);
    res.set('Content-Type', 'application/json')
    //const body = res.body()
});

  1. 回调方法

db.js

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
module.exports = { 
    layer: function(layer, cb) { 
        connection.query('SELECT ST_AsGeoJSON(geom) FROM nzta_centrelines', (err, result) => {
            if (err) {
                console.error('Error executing query', err.stack)
                return cb(err)
            }
            var geometry = result.rows[0].st_asgeojson;
            console.log(geometry);
            return cb(null, geometry);
        })
    }
}

app.js

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
...
app.post('/layer', (req, res, next) => {
    var layer = req.body.menu;
    db.layer(layer, (err, geometry) => {
        if (err) throw err;
            console.log(geometry);
    res.set('Content-Type', 'application/json')
    //const body = res.body()
    });
});
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59130931

复制
相关文章
c++禁止隐式转换_无法将int隐式转换为类
那么如何阻止它呢? C++ 标准有一条规定: “Implicit conversions will be performed […] if the parameter type contains no template-parameters that participate in template argument deduction” (ISO/IEC 14882:1998, section 14.8.1.4). 也就是说,既在模板参数列表中,又在函数参数列表中的类型不会隐式转换。也就是:
全栈程序员站长
2022/11/10
1.2K0
解决php无法将string转换为json的办法
背景:最近在开发小程序(替客户做的),一个水印小程序,通过接口实现了去掉水印,原理很简单,但是由于目标解析的地址域名太多,用了域名通配后也是出现不在合法域名中的错误,于是只能用自己的服务器来进行一个踏板,所以当数据回调后需要清洗数据出来给小程序用,在这里就出现了问题:
德宏大魔王
2023/08/08
1500
解决php无法将string转换为json的办法
无法转换为内部表示
系统查询表记录时出现“java.sql.SQLException: 无法转换为内部表示”异常,抛出的异常信息如下:
程序新视界
2022/11/30
6790
Unity-资源打包-AssetBundle
读取AB包 1.直接记载一个单独的物体(无依赖) 通过AssetBundle的LoadFromFile方法获取AB包,在通过LoadAsset的泛型方法获得GameObject
祝你万事顺利
2019/05/29
2.8K0
无法重新布局的问题
调用的是Activity的getLayoutInflater 这句代码原本是没有什么问题的,但是在Fragment中使用就有问题了。
用户10521372
2023/04/21
4280
使用dx将class转dex总结
dx工具是一种用来转换Java class成为DEX格式的工具。多个类被包含在一个dex文件之中。各个类中重复的字符串和其他常数只在DEX中存放一次,以节省空间。Java字节码(bytecode)被转换成Dalvik虚拟机所使用的替代指令集。一个未压缩dex文件通常稍小于一个已经压缩的.jar档(摘自维基百科)。
静默加载
2020/05/29
1.6K0
unity3d 资源打包加密
string path = EditorUtility.SaveFilePanel("Save Resource", "", "New Resource", "unity3d");
py3study
2020/01/08
1.2K0
简单 Unity3D 安卓游戏逆向思路
起因是个人很喜欢玩 google play 上的一些数字类型(角色攻击是线性增长,怪物指数变强,到后期越打不过,通过重生增强属性变强)的小游戏。但是这种游戏仍旧存在一定缺陷,前期资源不多,玩的太慢、玩的时间长了,就感觉没意思,就不想玩了,所以在玩到游戏中期的时候,往往都会去网上搜索XXX破解版/内购版,快速进入后期然后放弃这款游戏。
Seebug漏洞平台
2019/02/26
4.8K1
关于flutter打包无法上传的问题
在Android端,当minSdkVersion为24经flutter build apk打包出来的apk在大部分应用市场上都存在签名问题,无法正常上传apk。解决的方法是,使用Android Studio打开Android进行原生打包,即使用 【Build】->【Generate Signed Bundle/APK】->【选择APK】->【填写签名信息】->【Signature Versions只勾选V1】的方式进行签名。
xiangzhihong
2022/11/30
1.1K0
无法将类型“System.Collections.Generic.IEnumerable<EmailSystem.Model.TemplateInfo>”隐式转换为“System.Collection
List<Model.Template> templateList = templateBLL.RecommendTemplateByOrder(modelEbay);        List<Model.TemplateInfo> recommandlist = templateList.Select(m => new Model.TemplateInfo                 {                     AccountId = m.AccountID,            
跟着阿笨一起玩NET
2018/09/19
1.6K0
将tensor转换为图像_tensor转int
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
全栈程序员站长
2022/11/07
11.4K0
Idea 中图片资源无法加载问题
今天在看一个 Java 的小游戏时,遇到项目图片资源无法加载的问题,运行显示界面如图
攻城狮杰森
2022/06/03
2.9K0
Idea 中图片资源无法加载问题
【Android 热修复】热修复原理 ( 多 Dex 打包机制 | 多 Dex 支持 | Dex 分包设置 | 开发和产品风格设置 | 源码资源 )
在 【Android 热修复】热修复原理 ( 类加载机制 | PathClassLoader 加载 Dex 机制 | PathDexList 查找 Class 机制 | 类查找的顺序机制 )三、 类查找的顺序机制 博客章节有讲解到 , Android 类加载时 , 必须进行分包操作 , 必须有
韩曙亮
2023/03/29
9650
【Android 热修复】热修复原理 ( 多 Dex 打包机制 | 多 Dex 支持 | Dex 分包设置 | 开发和产品风格设置 | 源码资源 )
pyinstaller打包pyqt5程序无法运行
转载自:https://www.cnblogs.com/boliu/p/7574804.html
渔父歌
2019/02/28
2K0
自动构建Unity3D项目到二进制程序
Unity3D 是一个用于创建诸如三维视频游戏、建筑可视化、实时三维动画等类型互动内容的综合型创作工具。其编辑器运行在Windows和Mac OS X下,可发布游戏至Windows、Wii、OSX或iOS平台。他的持续集成方法主要是通过调用 BuildPipline.BuildPlayer() 方法来实现直接生成Windows/MacOS下可运行的程序,或生成Android/iOS项目,再通过脚本进行编译打包生成apk/ipa。利用图形化界面Jenkis来方便用户使用。
海哥@开发
2022/04/04
8970
Unity使用AssetImporter整理资源对其进行打包
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
bering
2019/12/02
2.8K0
Unity3d热更新(二):资源打包As
2.在Assets目录下创建Scenes文件夹,创建场景scene1.unity。
py3study
2020/01/11
9130
解决webpack打包静态资源(样式)无法添加厂商前缀-webkit -moz -ms -o的问题
可以设置以下browserlist,现在webpack默认你的项目支持高版本浏览器,我们可以将支持的浏览器覆盖的全面一点就出来前缀了
砖业洋__
2023/05/06
2600
解决webpack打包静态资源(样式)无法添加厂商前缀-webkit -moz -ms -o的问题
如何帮助企业将原始长链接转换为短链接?
小码短链接是一款短链接工具,帮助企业将原始长链接转换为短链接,并可以支持短链接访问统计,可以设置自定义域名的短链接,微信朋友圈分享设置,抖音平台分享设置等功能。
用户9934601
2022/08/30
1.7K0
点击加载更多

相似问题

Unity Android无法重新打包资源

132

Unity Android build -无法重新打包资源

10

Unity 5-无法重新打包资源

15

Unity3d (无法重新打包资源。)

12

Unity Android构建错误:无法重新打包资源

13
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文