Traté de agregar un upsert simple usando knex. Y la forma recomendada es (para postgres) usar onConflict. El código original que funciona (excepto la parte de actualización):
const dbObject = db(); await dbObject('names') .insert({key: key, name: name});Así que lo actualicé de acuerdo con lo que veo en el manual :
const dbObject = db(); await dbObject('names') .insert({key: key, name: name}) .onConflict('key') .merge();Sin embargo, esto dio el siguiente error:
TypeError: dbObject(...).insert(...).onConflict no es una función
Lo cual para mí es todo un misterio, ya que estoy usando la versión correcta:
npm ver la versión knex
0.95.0
Y el objeto knex db se crea básicamente mediante (la configuración se carga desde un archivo):
const knex = knexBuilder({ client: 'pg', connection: config, pool: {min: 0, max: maxConnections}, }); return knex¿Qué está causando el error? ¿Cómo onConflict no es una función?