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' ]);
请参阅合并和扩展的方法,以避免重新声明相同的列。
- 使用Node.js和Express.js删除MySQL中给定数组值的多行
- 什么是最有效的方式来获得最后一个换行符的string
- 在实习生testing中包含jQuery
- Express + PassportJs:为什么我们需要在passport策略中用process.nextTick()延迟执行方法?
- 如何从node-webkit获取无托pipe页面的桌面应用程序的访问令牌?
- 如何理解这个语法? var {…} = React;
- Cryptographer TypeError:第一个参数必须是一个string
- 使用jQuery进行Passport.JS身份validation不会存储Cookie
- 使用Caolan的asynchronous模块返回一个值