Node.js等待postgresql错误

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Node.js等待postgresql错误相关的知识,希望对你有一定的参考价值。

我使用express和PostgreSql。

我的项目文件夹:

-Model
    -Visitor.js
-app.js

我已将postgresql与pg连接,并且我已经使用查询进行了测试。它运行良好。但是,在Visitor.js文件上有一个查询。

var visitor = function() {
    this.add = function() {
        var ret = false;
        db.query({text: 'INSERT INTO visitor(visitorid, data, status) VALUES($1, $2, $3)', values:[id, JSON.stringify(data), "1"]}, function (err, response) {
            if(!err) {
                ret = true;
            }
        });
        return ret;
    }
}

此查询始终在我的表中插入一行但返回false。此函数应等待查询结束。我该怎么做 ?

答案

你应该等待一个承诺

this.add = function() {
    return new Promise((resolve, reject) => {
        db.query({text: 'INSERT INTO visitor(visitorid, data, status) VALUES($1, $2, $3)', values:[id, JSON.stringify(data), "1"]}, function (err, response) {
            if(!err)
                resolve(response)
            else
                reject(err)
        });
    })        
}

然后你可以在visitor.add函数上等待

编辑如果您正在使用pg库:如Getting Started所示,您可以直接等待client.query函数,因为它在您不提供回调时返回Promise

const { Client } = require('pg')
const client = new Client()

await client.connect()

const res = await client.query('SELECT $1::text as message', ['Hello world!'])
console.log(res.rows[0].message) // Hello world!
await client.end()

以上是关于Node.js等待postgresql错误的主要内容,如果未能解决你的问题,请参考以下文章

Postman 卡在“GET”请求中,在使用 PostgreSQL 作为后端的 Node JS 中给出“无法获得响应错误:读取 ECONNRESET”的错误

Node.JS MySql 在循环中等待预期结果

Node.js/Mongoose 等待异步 For 循环

Node.js JavaScript 片段中的跳过代码

如何将在 zeit 中运行的 node.js 与 postgresql 连接起来?

***等待在最新的 Node.js 中不起作用