错误:无效值 { username: { '$eq': 'admin' } } by sequelize"/>
错误:无效值 { username: { '$eq': 'admin' } } by sequelize
我正在尝试为后端制作一个登录路由器,用户可以使用他的电子邮件或他的用户名登录。为此,代码会尝试在数据库中查找用户名或电子邮件。但是当我运行代码并将 json 数据发送到登录路由器时,出现以下错误:
throw new Error(`Invalid value ${logger.inspect(val)}`);
^
Error: Invalid value { username: { '$eq': 'admin' } }
at Object.escape (D:\programmeerstuff\javascript\pws\version 0.0.1\server\node_modules\sequelize\lib\sql-string.js:53:11)
at MySQLQueryGenerator.escape (D:\programmeerstuff\javascript\pws\version 0.0.1\server\node_modules\sequelize\lib\dialects\abstract\query-generator.js:763:22)
at D:\programmeerstuff\javascript\pws\version 0.0.1\server\node_modules\sequelize\lib\dialects\abstract\query-generator.js:1989:71
at Array.map (<anonymous>)
at MySQLQueryGenerator._whereParseSingleValueObject (D:\programmeerstuff\javascript\pws\version 0.0.1\server\node_modules\sequelize\lib\dialects\abstract\query-generator.js:1989:52)
at MySQLQueryGenerator.whereItemQuery (D:\programmeerstuff\javascript\pws\version 0.0.1\server\node_modules\sequelize\lib\dialects\abstract\query-generator.js:1805:19)
at D:\programmeerstuff\javascript\pws\version 0.0.1\server\node_modules\sequelize\lib\dialects\abstract\query-generator.js:1730:25
at Array.forEach (<anonymous>)
at MySQLQueryGenerator.whereItemsQuery (D:\programmeerstuff\javascript\pws\version 0.0.1\server\node_modules\sequelize\lib\dialects\abstract\query-generator.js:1728:35)
at MySQLQueryGenerator.getWhereConditions (D:\programmeerstuff\javascript\pws\version 0.0.1\server\node_modules\sequelize\lib\dialects\abstract\query-generator.js:2071:19)
Node.js v18.12.0
[nodemon] app crashed - waiting for file changes before starting...
这里是 user.js 代码:
const express = require("express");
const router = express.Router();
const { Users } = require("../models");
const bcrypt = require("bcrypt");
router.post("/login", async (req, res) => {
const { username, password } = req.body;
console.log(req.body);
console.log(username);
const user = await Users.findAll({
where: {
$or: [
{
username: {
$eq: username
}
},
{
email:{
$eq: username
}
}
]
},
});
if (!user) {
res.json({ error: "password or username incorrect" });
}
bcryptpare(password, user.password).then((match) => {
if (!match) res.json({ error: "password or username incorrect" });
});
});
数据库index.js:
'use strict';
const fs = require('fs');
const path = require('path');
const Sequelize = require('sequelize');
const basename = path.basename(__filename);
const env = process.env.NODE_ENV || 'development';
const config = require(__dirname + '/../config/config.json')[env];
const db = {};
const Op = Sequelize.Op;
const operatorsAliases = {
$eq: Op.eq,
$ne: Op.ne,
$any: Op.any,
$all: Op.all,
$values: Op.values,
$col: Op.col
};
let sequelize;
if (config.use_env_variable) {
sequelize = new Sequelize(process.env[config.use_env_variable], config, { operatorsAliases });
} else {
sequelize = new Sequelize(config.database, config.username, config.password, config, { operatorsAliases });
}
fs
.readdirSync(__dirname)
.filter(file => {
return (file.indexOf('.') !== 0) && (file !== basename) && (file.slice(-3) === '.js');
})
.forEach(file => {
const model = require(path.join(__dirname, file))(sequelize, Sequelize.DataTypes);
db[model.name] = model;
});
Object.keys(db).forEach(modelName => {
if (db[modelName].associate) {
db[modelName].associate(db);
}
});
db.sequelize = sequelize;
db.Sequelize = Sequelize;
module.exports = db;
我尝试使用这个问题中的 awnser:Sequelize invalid value Symbol(ne) 但我得到了与上面相同的错误。
回答如下:我有同样的问题。在我的例子中,我传递了一个错误类型的变量。 您需要检查:
- 你的表中的列名是否匹配
- 确保传递具有正确数据类型的变量(与数据库中的类型进行比较)
更多推荐
错误:无效值 { username: { '$eq': 'admin' } } by sequelize
发布评论