pg-обещание helpers.update не работает

1

Я не могу получить метод helpers.update. Я почти на 100% уверен, что это что-то простое, что я пропускаю. Ниже приведены столбцы в таблице, участвующие в коде:

  • user_social_profile_id
  • user_id
  • user_social_profile_platform
  • user_social_profile_link

Ниже мое определение для ColumnSet. (Заметьте, я добавил несколько интервалов, которые НЕ находятся в моем фактическом коде. Мне просто не нравится прокручивать эти окна.)

const usersSocialProfiles = new pgp.helpers.ColumnSet(
  [ 
    'user_id', 
    'user_social_profile_platform',
    'user_social_profile_link'
  ],
  {table: 'users_social_profiles'}
);
const usersSocialProfilesUpdate = new pgp.helpers.ColumnSet(
  [ 
    '?user_social_profile_id',
    '?user_id',
    'user_social_profile_platform',
    'user_social_profile_link'
  ],
  {table:'users_social_profiles'}
);

Затем функция для переключения между которыми ColumnSet который я хочу использовать

var pgpConstantSet = function(setName){
  if(setName === "usersSocialProfiles")
  {
    return usersSocialProfiles; 
  }
  if(setName === "updateUsersSocialProfiles")
  {
    return usersSocialProfilesUpdate;
  }
}

Попытка использовать ColumnSet

  var profiles = await pgp.helpers.update(userData.socialProfiles, 
  pgConstantSet("usersSocialProfiles"))+ 
  " WHERE t.user_social_profile_id=v.user_social_profile_id";
  console.log(profiles);

  return res.status(201).end();

И то, что распечатывает console.log (профили)

"User_social_profile_platform", "user_social_profile_link" = "v". "User_social_profile_link" FROM (VALUES (51, "facebook", "http: /w.sefvfaboklink.com")) AS "v" ("user_id", "user_social_profile_platform", "user_social_profile_link") WHERE t.user_social_profile_id = v.user_social_profile_id PATCH/api/users 201 55.858 ms - -

Я должен отметить, что я использовал другой ColumnSet я определил для вставляемых ColumnSet как шарм. Я очень ценю всех, кто попал сюда. Я знаю, что это немного беспорядок.

Теги:
pg-promise

1 ответ

1
Лучший ответ

Все типы и методы в пространстве имен помощников предназначены для генерации запросов, которые вы путаете для их выполнения.

В коде вы генерируете только запрос, но никогда не выполняете его. Вы должны удалить await до того helpers.update вызова, поскольку генерация запроса является синхронной, и использовать одну из баз данных методов для выполнения запроса. Последний является асинхронным;)


В другой заметке, лучший способ для вашего примера объявить usersSocialProfilesUpdate:

const usersSocialProfilesUpdate = usersSocialProfiles.merge([
    '?user_social_profile_id',
    '?user_id'
  ]);

См. Методы merge и extend, которые помогают избежать повторного объявления одних и тех же столбцов.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню