2017-10-06 64 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 
    } 
    } 
)