最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

错误:无效值 { username: { '$eq': 'admin' } } by sequelize

网站源码admin36浏览0评论

错误:无效值 { 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) 但我得到了与上面相同的错误。

回答如下:

我有同样的问题。在我的例子中,我传递了一个错误类型的变量。 您需要检查:

  1. 你的表中的列名是否匹配
  2. 确保传递具有正确数据类型的变量(与数据库中的类型进行比较)
发布评论

评论列表(0)

  1. 暂无评论