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字段
我不知道为什么没有打印错误消息或插入失败并且不起作用的原因。