AWS Amplify Gen2预注册触发器中MySQL主键自增问题求助
解决Cognito预注册触发器中UserProfile表自增主键问题
1. 确认MySQL数据库表结构
首先确保user_profiles表的id字段已设置为自增主键,若未设置,执行以下SQL修改:
ALTER TABLE user_profiles MODIFY COLUMN id INT AUTO_INCREMENT PRIMARY KEY;
2. 修改Amplify数据Schema
将生成的Schema中id字段的定义从a.integer().required()替换为a.autoincrement().required(),标记该字段为自增类型:
schema({ "user_profiles": a.model({ id: a.autoincrement().required(), // 改为自增配置 email: a.string(), profile_owner: a.string(), user_type: a.string(), }).identifier([ "id" ]) });
3. 更新Amplify客户端
重新生成客户端代码并部署,使Schema变更生效:
npx ampx generate client npx ampx deploy
4. 调整Cognito触发器代码
移除create方法中的id参数,由数据库自动生成自增值,同时确保返回event以完成Cognito流程:
export const handler: PreSignUpTriggerHandler = async (event) => { await client.models.UserProfile.create({ email: event.request.userAttributes.email, user_type: event.request.userAttributes['custom:user_type'], profile_owner: `${event.userName}`, }); return event; // 必须返回event,否则Cognito注册流程会中断 };
内容的提问来源于stack exchange,提问作者Ajith
相关产品推荐
相关产品推荐

