-
Sequelize 警告:
Model attributes (larkUserId) passed into finder method options- 原因:SQLite (Sequelize) 需要使用
where子句进行查询 - MongoDB 直接使用对象查询
- 原因:SQLite (Sequelize) 需要使用
-
用户查找失败:
用户不存在或未激活- 字段名映射问题(如
is_activevsisActive) - 创建和更新用户的方法不同
- 字段名映射问题(如
- 使用
user.isActive而不是user.is_active - SQLite 模型定义了 getter/setter 来处理字段映射
// SQLite
User.findOne({ where: { larkUserId: larkUserInfo.user_id } })
// MongoDB
User.findOne({ larkUserId: larkUserInfo.user_id })// SQLite - 使用 create
user = await User.create(userData);
// MongoDB - 使用 new 和 save
user = new User(userData);
await user.save();// SQLite - 使用 update
await user.update({ avatar: larkUserInfo.avatar_url });
// MongoDB - 直接修改属性
user.avatar = larkUserInfo.avatar_url;
await user.save();-
清除数据库(如果需要)
rm lark-task.db
-
重启服务
npm start
-
重新进行 OAuth 登录
- 访问登录页面
- 完成授权流程
-
验证修复
- 不应再看到 Sequelize 警告
- 用户应能正常创建和查找
- API 认证应正常工作
| 功能 | MongoDB | SQLite (Sequelize) |
|---|---|---|
| 查询 | User.findOne({field: value}) |
User.findOne({where: {field: value}}) |
| 创建 | new User(data); await user.save() |
await User.create(data) |
| 更新 | user.field = value; await user.save() |
await user.update({field: value}) |
| 字段访问 | 直接访问 | 通过 getter/setter |