首页 > 解决方案 > 如何获取最近 7 天的所有记录 sequelize

问题描述

我正在尝试使用 sequelize 从 mysql 数据库中获取所有记录,并且我尝试了以下方法:

shops.findAndCountAll({
  where: {
    createdAt: {
      [Op.gte]: moment().subtract(7, 'days').toDate()
    }
  }
})

当我使用它时,我得到了错误: ReferenceError: moment is not defined

所以我尝试了这种方法:

shops.findAndCountAll({
  where: {
    createdAt: {
      [Op.gte]: Sequelize.literal('NOW() - INTERVAL "7d"'),
    }
  }
})

但我收到以下错误

code: 'ER_PARSE_ERROR',
    errno: 1064,
    sqlState: '42000',
    sqlMessage: "You have an error in your SQL syntax; check the manual that corresponds to 

your MySQL server version for the right syntax to use near '' at line 1",
        sql: "SELECT count(*) AS `count` FROM `shop` AS `shops` WHERE `shops`.`createdAt` >= NOW() - INTERVAL '7d';"
      },
      sql: "SELECT count(*) AS `count` FROM `shop` AS `shops` WHERE `shops`.`createdAt` >= NOW() - INTERVAL '7d';"
    }

我该如何解决这个问题。我不介意我使用哪种方法,只要我让它发挥作用。

先感谢您

标签: node.jssequelize.jssequelize-cli

解决方案


您没有导入moment;因此moment没有定义。

尝试

const moment = require('moment') //<es6

或者

import moment from 'moment' 

推荐阅读