pg-promise helpers.update无效

时间:2017-10-24 00:39:29

标签: javascript node.js pg-promise

我无法使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(个人资料)打印的内容

  

更新" users_social_profiles" AS" t"组   " USER_ID" =" V"" USER_ID"" user_social_profile_platform" =" V"" user_social_profile_platform& #34;" 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&#34)   WHERE.user_social_profile_id = v.user_social_profile_id PATCH   / api / users 201 55.858 ms - -

我应该注意到,我使用了我定义的其他ColumnSet插件,就像魅力一样。我真的很感激有人来到这里。我知道这有点乱。

1 个答案:

答案 0 :(得分:1)

helpers命名空间中的所有类型和方法都用于生成查询,您在执行查询时会感到困惑。

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

另一方面,您的示例可以更好地声明usersSocialProfilesUpdate

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

请参阅有助于避免重新声明相同列的方法mergeextend