Я не могу получить метод 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
как шарм. Я очень ценю всех, кто попал сюда. Я знаю, что это немного беспорядок.
Все типы и методы в пространстве имен помощников предназначены для генерации запросов, которые вы путаете для их выполнения.
В коде вы генерируете только запрос, но никогда не выполняете его. Вы должны удалить await
до того helpers.update
вызова, поскольку генерация запроса является синхронной, и использовать одну из баз данных методов для выполнения запроса. Последний является асинхронным;)
В другой заметке, лучший способ для вашего примера объявить usersSocialProfilesUpdate
:
const usersSocialProfilesUpdate = usersSocialProfiles.merge([
'?user_social_profile_id',
'?user_id'
]);
См. Методы merge и extend, которые помогают избежать повторного объявления одних и тех же столбцов.