2017-10-06 56 views
3

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

我包括我的应用程序文件引发错误,它是可能导致此错误的密码。

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

而不是编辑您的解决方案到您的问题,你应该写下**的实际答案**。否则,用户可能会浏览您的编辑,而不会看到它。考虑到user3139574的答案是一样的,甚至可能只是接受并赞成这个正确的答案。 – zero298

回答

7

这些是我发现这个弃用警告最好的解释:

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

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

添加“operatorsAliases:假”的确在我的应用程序覆盖警告消息。

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

注意:截至[email protected],我开始收到来自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 
    } 
    } 
)