我是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}以消除连接中的错误消息。
答案 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
},
});