2017-10-24 4 views
1

helpers.updateメソッドを動作させることができません。私はほぼ100%確信していますが、それは私が見落としている単純なものです。以下 はコードに関係表の列です:以下pg-promise helpers.update not working

  • 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'} 
); 

切り替える機能私は

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

を使用したいColumnSetいる間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(プロファイル)が

を出力を使用する試み"T" SET "のuser_id" = "V"。 "のuser_id"、 "user_social_profile_platform" = "V"。 "user_social_profile_platform"、 "user_social_profile_link" = "V"。 "user_social_profile_link" AS

UPDATE "users_social_profiles" AS"v"( "user_id"、 "user_social_profile_platform"、 "user_social_profile_link") ここでは、t.user_social_profile_id = v.user_social_profile_idのパッチを使用して、FROM(VALUES(51、 'facebook'、 'http:/w.sefvfaboklink.com' /API /ユーザー201の55.858 MS - -

私は挿入のために定義されColumnSet他を使用したことに注意すべきである魔法のように働きました。私は本当にここにいる誰にも感謝します。私はこれがちょっと混乱していることを知っています。

答えて

1

helpersの名前空間内のすべてのタイプとメソッドは、クエリを生成するためのものであり、それらを実行すると混乱します。

コードでは、クエリは生成されますが、実行されることはありません。 helpers.updateコールの前にawaitを削除する必要があります。これは、クエリの生成が同期的であるため、Databaseのいずれかのメソッドを使用してクエリを実行することです。後者は非同期です。)別のノート、usersSocialProfilesUpdateを宣言するためにあなたの例のためのより良い方法で


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

は、同じ列の再宣言を避けることを助ける方法mergeextendを参照してください。