繁体   English   中英

Sequelize.or返回Limit 1而不是结果

[英]Sequelize.or returns Limit 1 rather than or result

当我写作时,我正在使用SequelizeJS(MySql)和Passportjs进行身份验证

User.find(db.Sequelize.or({ 'username': username }, { 'email': req.body.email }) )
            .then((user) => {console.log(user)}

要么

User.find({$or:[({ 'username': username }, { 'email': req.body.email })]} )

Generats

执行(默认):SELECT idnameusernameemailpasswordPictureroleDescriptionjoinedAtSocialcreatedAtupdatedAtUsers AS User LIMIT 1;

我不明白发生了什么,我正在使用或者它生成限制1的查询!

我的用户模型

const bcrypt = require('bcrypt-node');
const db = require('../Config/db');

module.exports = function () {
    let DataType = db.Sequelize;
    let User = db.sequelize.define('User', {
        name: { type: DataType.STRING, allowNull: false },
        username: { type: DataType.STRING, unique: true, allowNull: false },
        email: { type: DataType.STRING, unique: true, allowNull: false, validate: { isEmail: true } },
        password: {
            type: DataType.STRING, allowNull: false, set: function (pass) {
                let newPassword = bcrypt.hashSync(pass);
                this.setDataValue('password', newPassword);
            }
        },
        Picture: { type: DataType.STRING, default: '#' },
        role: { type: DataType.STRING, default: 'user',allowNull: false },
        Description: { type: DataType.TEXT },
        joinedAt: { type: DataType.DATE, defaultValue: DataType.NOW },
        Social: { type: DataType.TEXT }
    }, {
            classMethods: {
                associate: function (models) {
                    User.hasMany(models.Post);
                }
            }
        }, {
            instanceMethods: {
                comparePassword: function (password) {
                    return bcrypt.compareSync(password, this.password);
                }
            }
        });

    return User;
}

Sequelize中没有函数Model.find() ,所以看起来你可能正在调用Model.findOne() ,它将LIMIT 1应用于你的查询。 要查找所有结果,您需要使用Model.findAll()

您应该使用查询运算符 $或,但它必须位于具有OR值数组的where元素内。 请参阅下面的示例。

User.findAll({
  where: {
    $or: [
      username: username,
      email: req.body.email,
    ],
  }
})
.then(users => console.log(users));

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM