Sequelize不推荐使用的错误消息

时间:2017-10-06 14:44:40

标签: node.js sequelize.js

我是Node的新手,我正在了解ORM和Sequelize的工作原理。我一直在Sequelize网站上复制连接字符串并将其更改为与我的数据库一起使用。当我执行该文件时,似乎执行OK在我的数据库中创建表但是我得到错误“基于字符串的运算符现在已被弃用。请使用基于符号的运算符以获得更好的安全性.... node_modules / sequelize / lib / sequelize。 js:236:13“我理解为什么操作符已被弃用,但是因为我已经将它作为新包安装并使用了文档中的连接字符串,因此避免使用任何非法操作符我正确地假设此错误消息是仅供参考,并未反映在我刚使用的代码中。

我包含了导致错误的app for app文件,是否是可能导致此错误的密码。

const express = require('express');
const app = express();

const Sequelize = require('sequelize');

const db = new Sequelize('myDBName', 'mYuSeRnAmE', 'mYpAsSw!ORd$', {
host: 'mySqlserverName',
  dialect: 'mssql',

  pool: {
    max: 5,
    min: 0,
    idle: 10000
  },

});


var Article = db.define('Article', {
    title: Sequelize.STRING,
    body: Sequelize.TEXT
});

db.sync();

module.exports = app;

****编辑****

我已经明白了,我会留下这个答案,只是因为其他人遇到了问题。您需要包含{operatorsAliases:false}以消除连接中的错误消息。

3 个答案:

答案 0 :(得分:30)

这是我在此弃用警告中找到的最佳解释:

https://github.com/sequelize/sequelize/issues/8417

http://docs.sequelizejs.com/manual/tutorial/querying.html#operators-aliases

添加" operatorAliases:false"确实覆盖了我的应用程序中的警告消息。

const Sequelize = require('sequelize')
const sequelize = new Sequelize(
  DB_NAME,
  USERNAME, 
  PASSWORD,
  {
    host: HOSTNAME,
    dialect: 'mysql',
    logging: false,
    freezeTableName: true,
    operatorsAliases: false
  }
)

注意:自sequelize@4.20.1起,我开始收到"无效的值" Sequelize的错误。我心软了并使用以下代码来启用符号运算符:

const Sequelize = require('sequelize')
const Op = Sequelize.Op
const sequelize = new Sequelize(
  DB_NAME,
  USERNAME, 
  PASSWORD,
  {
    host: HOSTNAME,
    dialect: 'mysql',
    logging: false,
    freezeTableName: true,
    operatorsAliases: {
      $and: Op.and,
      $or: Op.or,
      $eq: Op.eq,
      $gt: Op.gt,
      $lt: Op.lt,
      $lte: Op.lte,
      $like: Op.like
    }
  }
)

答案 1 :(得分:1)

更新至版本:

"sequelize": "^5.8.6"

并从

删除operatorsAliases参数
new Sequelize()

已删除折旧警告

答案 2 :(得分:0)

const sequelize = new Sequelize({
  username: process.env.DBUSERNAME,
  host: process.env.DBHOST,
  database: process.env.DBNAME,
  password: process.env.DBPASSWORD,
  dialect: 'postgres',
  define: {
    timestamps: false,
  },
  operatorsAliases: false,
  pool: {
    max: 5,
    min: 0,
    idle: 10000
  },

});