pg-promise helpers.update不起作用

我无法得到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(configuration文件)打印

UPDATE“users_social_profiles”AS“t”SET“user_id”=“v”。“user_id”,“user_social_profile_platform”=“v”。“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 ,它被定义为像魅力一样工作的插入。 我很欣赏任何人到这里。 我知道这是一个混乱。

帮助程序名称空间中的所有types和方法都用于生成查询,这些查询会混淆执行它们。

在你的代码中,你只能生成查询,但从不执行。 您应该在helpers.update调用之前删除await ,因为查询生成是同步的,并使用一个Database方法执行查询。 后者是asynchronous的;)


在另一个说明中,更好的方式来声明usersSocialProfilesUpdate

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

请参阅合并和扩展的方法,以避免重新声明相同的列。