Я использую SequelizeJS (MySQL) с Passportjs для аутентификации , когда я пишуSequelize.or возвращает Limit 1, а не или результат
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
id
,name
,username
,password
,Picture
,role
,Description
,joinedAt
,Social
,createdAt
,updatedAt
ОТUsers
ASUser
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;
}
'find' является псевдонимом для' findOne', но теперь работает с тем, где Спасибо, проблема документы не предлагают каких-либо примеров, как это. –
Он должен генерироваться динамически, вы правы, что это не в документах, и я тоже не видел его со статическим анализом. Я бы рекомендовал придерживаться методов в официальных документах. – doublesharp