Skip to content

[Bug] ObjectQL Adapter field name mapping error: camelCase vs snake_case causes 'Credential account not found' on sign-in #893

@hotlong

Description

@hotlong

Bug Description

注册用户后,使用邮箱密码登录时出现错误提示:

2026-03-09T09:47:20.241Z ERROR [Better Auth]: Credential account not found { email: 'zhuangjianguo@gmail.com' }

数据库数据示例

"sys_user": [
  {
    "id": "sys_user-1773049618228-1",
    "createdAt": "2026-03-09T09:46:58.228Z",
    "updatedAt": "2026-03-09T09:46:58.228Z",
    "email": "zhuangjianguo@gmail.com",
    "name": "建国庄",
    "emailVerified": false,
    "created_at": "2026-03-09T09:46:58.228Z",
    "updated_at": "2026-03-09T09:46:58.228Z"
  }
],
"sys_account": [
  {
    "id": "sys_account-1773049618228-1",
    "createdAt": "2026-03-09T09:46:58.228Z",
    "updatedAt": "2026-03-09T09:46:58.228Z",
    "userId": "sys_user-1773049618228-1",
    "providerId": "credential",
    "accountId": "sys_user-1773049618228-1",
    "password": "36ff5c34c9f42b59ca42bdfbb591848d:6c67ab1e18170a7671840499ba9d632d5e5e140d483c4bc2f4f34ac13493fd10108fe55fca441cc378dc2e5a2805d836048550c530e43933866a8abd7b6f9733",
    "created_at": "2026-03-09T09:46:58.228Z",
    "updated_at": "2026-03-09T09:46:58.228Z"
  }
],

现象与分析

  • 注册和登录流程后,账号数据被正确存入数据库,且字段名为 camelCase(如 providerId, accountId)。
  • ObjectStack 的 auth-account.object.ts schema 定义字段为 snake_case:provider_id, account_id。
  • Better-auth 查询时使用 camelCase 字段,ObjectQL adapter 无字段名转换,因此 findOne/filter 查询不能正确匹配。

导致登录时无法查找正确的账号记录,出现 'Credential account not found' 错误。

期待行为

  • ObjectQL adapter 在写入和查询时应实现 camelCase ↔ snake_case 字段名自动转换,保证数据读写一致。
  • 登录流程可正确查找账号,不再出现 'Credential account not found'。

解决建议

  • 在 objectql-adapter.ts 的 convertWhere 和相关读写函数中增加字段名转换实现。
  • 可参考 lodash.camelCase/snakeCase 实现双向映射。

请确认修复后同步测试并更新相关 issue。


  • 数据库结构与 adapter 字段名映射不一致
  • 登录流程查找账号失败
  • 修复 adapter,实现字段名一致性

相关代码:

Metadata

Metadata

Assignees

Labels

bugSomething isn't working

Type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions