Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 如何从Node.js将记录插入Postgres?节点pg没有很好的记录_Sql_Postgresql_Node Postgres_Node Pg Pool - Fatal编程技术网

Sql 如何从Node.js将记录插入Postgres?节点pg没有很好的记录

Sql 如何从Node.js将记录插入Postgres?节点pg没有很好的记录,sql,postgresql,node-postgres,node-pg-pool,Sql,Postgresql,Node Postgres,Node Pg Pool,1。总结问题 我需要从node-pg向Postgres中插入数据。有一个主键列是用“serial”创建的 node pg文档非常缺乏,我在生产环境中看到的大多数表都有一个自动递增的主键和一个日期字段,文档中的示例只提供了两个文本字段(名称、电子邮件地址)以外的示例 需要做一些不同的事情,除了在任何示例中显示的以外,我可以在任何地方找到插入带有自动递增id、日期字段和地理数据类型(纬度、经度)的记录/行的方法 如果我能简单地获得一个自动递增id工作的记录,我会很高兴,并进入下一步,尝试插入一个时间

1。总结问题

我需要从node-pg向Postgres中插入数据。有一个主键列是用“serial”创建的

node pg文档非常缺乏,我在生产环境中看到的大多数表都有一个自动递增的主键和一个日期字段,文档中的示例只提供了两个文本字段(名称、电子邮件地址)以外的示例

需要做一些不同的事情,除了在任何示例中显示的以外,我可以在任何地方找到插入带有自动递增id、日期字段和地理数据类型(纬度、经度)的记录/行的方法

如果我能简单地获得一个自动递增id工作的记录,我会很高兴,并进入下一步,尝试插入一个时间戳字段,然后插入一个地理代码

2。提供背景信息,包括您已经尝试过的内容

我已经阅读了node pg文档,我在github区域发布了一个问题,但没有得到任何回应,我已经阅读了十几篇文章,作者的文章通常都很懒,并且没有提供一个最常见的真实场景的示例,即插入一个带有自动递增主键/id和至少一个日期字段的行

所有示例仅插入两个文本字段。我不知道,在关系完整性高度相关的企业生产环境中,可能没有使用节点pg,但这令人沮丧

3。显示一些代码

下面是createtable.sql

CREATE TABLE address (
        id serial PRIMARY KEY,
        client_id  integer not null,
        property_id integer not null,
        street1 varchar(40),
        street2 varchar(40),
        city varchar(30),
        state_ab char(2),
        zip varchar(10)
);
// verified_date TIMESTAMP, //no example on how to with node-pg
这是运行时没有错误的节点pg代码,没有显示错误,但也没有插入任何内容

function test_insert() {
    const text = 'INSERT INTO address ('
        + ' id,'
        + ' client_id,'
        + ' client_property_id,'
        + ' street1,'
        + ' street2,'
        + ' city,'
        + ' state,'
        + ' zip)'
        + ' VALUES(DEFAULT, $1, $2, $3, $4, $5, $6, $7) RETURNING *';
        //+ ' verified_date) VALUES(DEFAULT, $1, $2, $3, $4, $5, $6, $7, $8) RETURNING *';  //inserting TIMESTAMP not working either, one step at a time.

    //const now = Date();
    const values = [
        101,
        1001,
        '1600 Amphitheatre Parkway',
        '',
        'Mountain View',
        'CA',
        '94043'];

    client
        .query(text, values)
        .then(res => {
            console.log(res.rows[0])
        })
        .catch(e => console.error(e.stack))
}
test_insert()
4。描述预期和实际结果,包括任何错误消息

没有插入数据,我希望会有错误消息,但没有。提供的示例直接取自node pg文档,但不起作用

首先,我需要插入一个自动递增的行,然后,如果有人想插话,我需要添加一个时间戳为的字段


我不知道为什么没有打印错误消息,或者为什么插入失败且不起作用。

听起来好像您在使用代码时丢失了一个提交。上面的示例不起作用,client\u property\u id!==属性id,状态!==state_ab.还向我们展示如何创建客户端以及何时“发布”客户端。除此之外,上面的代码也很有效。你可以试试看,它有更好的文档,还有大量的例子,比如,在它的Wiki页面上还有更多的例子。
function test_insert() {
    const text = 'INSERT INTO address ('
        + ' id,'
        + ' client_id,'
        + ' client_property_id,'
        + ' street1,'
        + ' street2,'
        + ' city,'
        + ' state,'
        + ' zip)'
        + ' VALUES(DEFAULT, $1, $2, $3, $4, $5, $6, $7) RETURNING *';
        //+ ' verified_date) VALUES(DEFAULT, $1, $2, $3, $4, $5, $6, $7, $8) RETURNING *';  //inserting TIMESTAMP not working either, one step at a time.

    //const now = Date();
    const values = [
        101,
        1001,
        '1600 Amphitheatre Parkway',
        '',
        'Mountain View',
        'CA',
        '94043'];

    client
        .query(text, values)
        .then(res => {
            console.log(res.rows[0])
        })
        .catch(e => console.error(e.stack))
}
test_insert()