Sequelize 在 Postman 上投掷 "Invalid value { searchTerm: 'Kaizer fc', sportType: '2' }"

Sequelize throwing "Invalid value { searchTerm: 'Kaizer fc', sportType: '2' }" on Postman

我正在尝试创建一个序列化查询,用于搜索团队名称并根据运动类型进行筛选,但是当我在 Postman 上测试 JSON 正文时,我收到一个错误并且它没有 returning数据。 JSON 正文匹配它对 return 的数据,但它不匹配。

在 Postman 上测试

{
   "searchTerm": "Kaizer fc",
   "sportType": "2"
}

teams.js

const Teams = require('../models').teams;
const {sequelize, QueryTypes } = require('sequelize');
const db = require('../models')

const search = (searchTerm, sportType) => {
  return new Promise(async (resolve, reject) => {
    try {     
      
        console.log("Testing");

        const teams = await db.sequelize.query(
          `SELECT teams.name, institutions.name, addresses.line1, addresses.line2, addresses.country 
           FROM teams
           INNER JOIN institutions
           ON teams.institution_id = institutions.id
           INNER JOIN addresses
           ON institutions.address_id = addresses.id
           WHERE teams.name like :search_name and teams.sport_type_id LIKE :sport_type`,
          {
            replacements: { search_name: searchTerm, sport_type: sportType },
            type: QueryTypes.SELECT
          }
        );

        return resolve(teams);
      } catch (err) {
        return reject(err)
      }
  })
}

teams.js - 模型文件夹

'use strict';
module.exports = (sequelize, DataTypes) => {
    const teams = sequelize.define('teams', {
        name: { type: DataTypes.STRING, allowNull: false },
        media_id: { type: DataTypes.STRING, allowNull: true },
        state_id: { type: DataTypes.INTEGER, allowNull: true },
        status_id: { type: DataTypes.INTEGER, allowNull: true },
        sport_type_id: { type: DataTypes.INTEGER, allowNull: false },
        created_by: { type: DataTypes.INTEGER, allowNull: true, references: { model: 'users', key: 'id' } },
        modified_by: { type: DataTypes.INTEGER, allowNull: true, references: { model: 'users', key: 'id' } },
        primary_user_id: { type: DataTypes.INTEGER, allowNull: true, references: { model: 'users', key: 'id' } },
        institution_id: { type: DataTypes.INTEGER, allowNull: true, references: { model: 'institutions', key: 'id' } },
    }, {
        createdAt: 'created_at',
        updatedAt: 'updated_at',
        indexes: [
            {
                unique: true,
                fields: ['id']
            }
        ],
    });
    return teams;
};

search.js - 控制器

const helper = require('../utils/helper');
const teamsService = require('../services/teams');

const search = async (req, res) => {

    try {
        const data = await teamsService.search(req.body);

        console.log("TESTING");
        console.log(data);
        
        return res.send(data);

    } catch (err) {
        return helper.handleError(err, req, res);
    }
}

module.exports = search;

search 函数有两个参数:searchTermsportType 并且您将整个 req.body 作为第一个参数传递,这就是它成为 [= 的值的原因13=] 并且你从 Sequelize 得到了关于整个值的错误。
只需从 req.body 中提取两个道具,或者使用作为对象传递的道具定义 search

const { searchTerm, sportType } = req.body;
const data = await teamsService.search(searchTerm, sportType);

const data = await teamsService.search(req.body);
...
const search = ({ searchTerm, sportType }) => {
  return new Promise(async (resolve, reject) => {