Как вставить запись в Postgres из Node.js? node-pg плохо документирован

1. Обобщите проблему.

Мне нужно вставить данные в Postgres из node-pg. Существует столбец первичного ключа, созданный с помощью "серийного номера".

Документации node-pg очень не хватает, большинство таблиц, которые я вижу в производстве, имеют первичный ключ с автоинкрементом и где-то поле даты, пример в документации не содержит примеров, кроме двух текстовых полей (имя, адрес электронной почты).

Необходимо сделать что-то другое, помимо того, что показано в любом примере, который я могу найти где угодно, чтобы вставить запись / строку с идентификатором автоинкремента, полем даты и типом географических данных (широта, долгота).

Если я смогу просто получить запись с работающим автоматически увеличивающимся идентификатором, буду счастлив и перейду к следующему шагу, пытаясь вставить поле TIMESTAMP, а затем геокод.

2. Предоставьте информацию о том, что вы уже пробовали.

Я прочитал документацию по node-pg, я опубликовал проблему в области github без ответа, я прочитал около дюжины статей, и авторы обычно ленивы и не предоставляют пример для наиболее распространенного реального сценария вставки строка с автоинкрементным первичным ключом / идентификатором и хотя бы одним полем даты.

Все примеры вставляют только два текстовых поля. Возможно, 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

Я понятия не имею, почему не печатается сообщение об ошибке или почему вставка не работает и не работает.

0 ответов

Другие вопросы по тегам