【问题标题】:Timezone Issue In Sequelize NodejsSequelize Nodejs中的时区问题
【发布时间】:2022-08-14 14:01:58
【问题描述】:

我希望 Sequelize 使用我的本地时间来读取和写入数据库。 在 Sequelize 配置文件中,我添加了时区:\"+04:30\",但它仅用于写入数据库。 用于在我添加时写入数据库

  dialectOptions: {
    useUTC: false, // -->Add this line. for reading from database
  },

我收到此错误:

忽略传递给连接的无效配置选项:useUTC。这目前是一个警告,但在 MySQL2 的未来版本中,如果您将无效的配置选项传递给 Connection,则会引发错误

完整的配置文件:

const Sequelize = require(\"sequelize\");

const sequelize = new Sequelize(\"db\", \"root\", \"\", {
  dialect: \"mysql\",
  port: process.env.SQL_PORT,
  host: \"localhost\",
  charset: \"utf8\",
  collate: \"utf8_persian_ci\",
  logging: false,
  dialectOptions: {
    useUTC: false, // -->Add this line. for reading from database
  },
   timezone: \"+04:30\",
});
  • 这是因为 mysql 不支持useUTC 选项。您可以在此处查看 mysql 可用选项的完整列表。 npmjs.com/package/mysql#connection-options
  • @ArkarAung那么我该怎么做才能将其设置为当地时间?

标签: javascript mysql node.js sequelize.js


【解决方案1】:

最后我在我的模型中通过 getter 修复了它:

createdAt: {
  type: Sequelize.DATE,
  defaultValue: moment(new Date()).format("YYYY-MM-DD HH:mm:ss"),
  get: function () {
    var isoDateString = new Date(this.getDataValue("createdAt"));
    return new Date(
      isoDateString.getTime() -
        isoDateString.getTimezoneOffset() * 60 * 1000
    );
  },

},

并将我的配置文件更改为:

const Sequelize = require("sequelize");

const sequelize = new Sequelize("db", "root", "", {
dialect: "mysql",
port: process.env.SQL_PORT,
host: "localhost",
charset: "utf8",
collate: "utf8_persian_ci",
logging: false,
timezone: "+04:30",
});

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-03-21
    • 1970-01-01
    • 1970-01-01
    • 2018-03-12
    • 2022-01-14
    • 2022-11-25
    • 2015-12-22
    相关资源
    最近更新 更多