【问题标题】:value.map is not a function in Sequelize findAll with or Paramvalue.map 不是 Sequelize findAll with or Param 中的函数
【发布时间】:2018-07-09 14:53:58
【问题描述】:

谁能帮我解决这个错误,这是我的代码:

const { UserLogs } = require("../models");

let logscontroller = {};

logscontroller.getAll = (req, res) => {
  console.log(req.body);
  let search = req.body.search.value;
  console.log(search);
  if (search === "") {
    UserLogs.findAll({
      offset: req.body.start,
      limit: req.body.length,
      order: [["id", "ASC"]],
      raw: true
    })
      .then(result => {
        res.json({
          data: result
        });
      })
      .catch(err => {
        console.log(err);
      });
  } else {
    UserLogs.findAll({
      where: {
        email: {
          $or: search
        }
      },
      offset: req.body.start,
      limit: req.body.length,
      order: [["id", "ASC"]],
      raw: true
    })
      .then(result => {
        res.json({
          data: result
        });
      })
      .catch(err => {
        console.log(err);
      });
  }
  return;
};

logscontroller.index = (req, res) => {
  res.render("logs", {
    title: "Logs Users"
  });
};

module.exports = logscontroller;

还有我的错误,我不知道为什么..

TypeError: value.map 不是函数 在 Object._whereBind (D:\HASH\back-office-2\node_modules\sequelize\lib\dialects\abstract\query-generator.js:2180:21) 在 Object.whereItemQuery (D:\HASH\back-office-2\node_modules\sequelize\lib\dialects\abstract\query-generator.js:2070:19) 在 Utils.getComplexKeys.forEach.prop (D:\HASH\back-office-2\node_modules\sequelize\lib\dialects\abstract\query-generator.js:1957:25) 在 Array.forEach () 在 Object.whereItemsQuery (D:\HASH\back-office-2\node_modules\sequelize\lib\dialects\abstract\query-generator.js:1955:35) 在 Object.getWhereConditions (D:\HASH\back-office-2\node_modules\sequelize\lib\dialects\abstract\query-generator.js:2423:19) 在 Object.selectQuery (D:\HASH\back-office-2\node_modules\sequelize\lib\dialects\abstract\query-generator.js:1133:28) 在 QueryInterface.select (D:\HASH\back-office-2\node_modules\sequelize\lib\query-interface.js:1077:27) 在 Promise.try.then.then.then (D:\HASH\back-office-2\node_modules\sequelize\lib\model.js:1596:34) 在 tryCatcher (D:\HASH\back-office-2\node_modules\bluebird\js\release\util.js:16:23) 在 Promise._settlePromiseFromHandler (D:\HASH\back-office-2\node_modules\bluebird\js\release\promise.js:512:31) 在 Promise._settlePromise (D:\HASH\back-office-2\node_modules\bluebird\js\release\promise.js:569:18) 在 Promise._settlePromise0 (D:\HASH\back-office-2\node_modules\bluebird\js\release\promise.js:614:10) 在 Promise._settlePromises (D:\HASH\back-office-2\node_modules\bluebird\js\release\promise.js:693:18) 在 Async._drainQueue (D:\HASH\back-office-2\node_modules\bluebird\js\release\async.js:133:16) 在 Async._drainQueues (D:\HASH\back-office-2\node_modules\bluebird\js\release\async.js:143:10) 在 Immediate.Async.drainQueues (D:\HASH\back-office-2\node_modules\bluebird\js\release\async.js:17:14) 在 runCallback (timers.js:789:20) 在 tryOnImmediate (timers.js:751:5) 在 processImmediate [as _immediateCallback] (timers.js:722:5)

【问题讨论】:

    标签: node.js sequelize.js


    【解决方案1】:

    根据 Sequelize Doc$or 接受数组:

    $or : [{authorId: 12}, {authorId: 13}]
    

    这就是你用过的

    email: {
        $or: search
    }
    

    我认为你需要的是:

    email : search // for exact match
    
    or 
    
    email : {
        $ilke : `%${search}%` // for partial match
    }
    

    【讨论】:

      猜你喜欢
      • 2020-04-08
      • 2017-04-24
      • 2019-11-17
      • 2021-03-21
      • 1970-01-01
      • 1970-01-01
      • 2023-03-06
      • 1970-01-01
      • 2020-05-13
      相关资源
      最近更新 更多