You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在Node.js中使用Sequelize如何实现用户名或邮箱均可登录的功能?

实现方案

核心是用Sequelize提供的Op.or逻辑操作符构造查询条件,支持同时匹配用户名或邮箱字段。

步骤1:引入操作符

首先需要在代码顶部引入Sequelize的操作符对象:

const { Op } = require('sequelize');
// ES Module导入写法如下
// import { Op } from 'sequelize';

步骤2:修改查询逻辑

根据前端传参的不同场景,对应调整代码即可:

场景1:前端仅提供一个账号输入框(用户可填用户名/邮箱,参数统一命名为loginAccount,最常用方案)

const { loginAccount, password } = req.body;
const user = await Users.findOne({
  where: {
    [Op.or]: [
      { username: loginAccount },
      { email: loginAccount }
    ]
  }
});

场景2:前端分别传递username和email两个参数

const { username, email, password } = req.body;
const user = await Users.findOne({
  where: {
    [Op.or]: [
      { username: username },
      { email: email }
    ]
  }
});

注意事项

  • 请提前给Users表的username和email字段设置唯一索引,避免出现同值多用户的情况,导致查询结果异常
  • 查询到用户后请务必比对加密后的密码哈希,不要直接存储和比对明文密码

内容的提问来源于stack exchange,提问作者Divad

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 08:15:04