// should create columnsets only once:
const cs = new pgp.helpers.ColumnSet(['email', 'password'], {table: 'users'});
function insertDB(data) {
// wrapping it into a function is safer, for error-reporting via query methods:
const query = ()=> pgp.helpers.insert(data, cs);
db.none(query)
.then(data => {
// data = null always here, no point displaying it
logger.info('Query success:', data);
})
.catch(error => {
logger.warn('Query error:', error);
});
}
И ваша функция не нуждается в async
в этом случае.
UnhandledPromiseRejectionWarning: Ошибка: свойство 'пароль' не существует.
Вы путаете компилятор JavaScript, объявляя функцию как async
, а затем генерируя ошибку синхронно при генерации вставки, из-за отсутствующего свойства password
.
И если вы хотите вставить некоторые записи безпароль, например null
, определите ваш набор столбцов следующим образом:
const cs = new pgp.helpers.ColumnSet([
'email',
{name: 'password', def: null}
], {table: 'users'});
Кроме этого, тип ColumnSet в конечном итоге гибкий, см. документацию для каждого содержащегося Столбец .
EXTRA
И если вы хотите использовать значение DEFAULT
на стороне сервера для пропущенных паролей, вы можете указать его с помощью команды Форматирование пользовательских типов :
const DEFAULT = {rawType: true, toPostgres: ()=> 'DEFAULT'};
И тогда ваш столбец password
может быть определен так:
{name: 'password', def: DEFAULT}
И есть много альтернатив со свойствами init
и mod
поддерживаются Column .