0

1. 总结问题

我需要从 node-pg 将数据插入 Postgres。有一个使用“序列”创建的主键列。

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

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

如果我可以简单地获得具有自动增量 ID 的记录,我会很高兴并进入下一步尝试插入 TIMESTAMP 字段,然后是地理代码。

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

我已经阅读了node-pg文档,我在github区域发布了一个没有回应的问题,我已经阅读了十几篇文章,作者通常很懒惰,没有为最常见的现实世界插入场景提供示例具有自动增量主键/ID 和至少一个日期字段的行。

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

3.显示一些代码

这是创建表.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
proc_db=> \d address
                                       Table "proc.address"
       Column       |         Type          |                      Modifiers
--------------------+-----------------------+------------------------------------------------------
 id                 | integer               | not null default nextval('address_id_seq'::regclass)
 client_id          | integer               | not null
 client_property_id | integer               | not null
 street1            | character varying(40) |
 street2            | character varying(40) |
 city               | character varying(30) |
 state_ab           | character(2)          |
 zip                | character varying(10) |

这是运行没有错误的 node-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 文档,但不起作用。

对于初学者,我需要插入一个自动递增的行,作为后续,如果有人想加入,我需要添加一个TIMESTAMP字段

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

4

0 回答 0