sequelize原始查询错误:查询不是一个函数

我试图在快速应用程序中使用来自sequelize的原始查询。 我的文件夹结构是:

/ /index.js /models/index.js /models/price.js /controllers/price.js 

我想使用sequelize,我已经在控制器的/models/index.js中定义了。

这是/models/index.js:

 "use strict"; var fs = require("fs"); var path = require("path"); var Sequelize = require('sequelize') , sequelize = new Sequelize(process.env.MYSQL_DB, process.env.MYSQL_USER, process.env.MYSQL_PASSWORD, { dialect: "mysql", // or 'sqlite', 'postgres', 'mariadb' port: 3306, // or 5432 (for postgres) timezone:'America/Sao_Paulo', }); sequelize .authenticate() .then(function(err) { console.log('Connection has been established successfully.'); }, function (err) { console.log('Unable to connect to the database:', err); }); var db = {}; fs .readdirSync(__dirname) .filter(function(file) { return (file.indexOf(".") !== 0) && (file !== "index.js"); }) .forEach(function(file) { var model = sequelize.import(path.join(__dirname, file)); db[model.name] = model; }); Object.keys(db).forEach(function(modelName) { if ("associate" in db[modelName]) { db[modelName].associate(db); } }); db.sequelize = sequelize; db.Sequelize = Sequelize; module.exports = db; module.exports.db = db; 

我想在价格控制器中使用原始查询:

 exports.index = function(req, res, next) { // var environment_hash = req.session.passport.user.environment_hash; var Price = require('../models/index').Price; var db = require('../models/index').db; console.log(db); db.query(`SELECT ... `).spread((results, metadata) => { // Results will be an empty array and metadata will contain the number of affected rows. console.log(results); }); var values = { where: { symbol: 'xxx' }, }; Price .findOne(values) .then(function(price) { console.log("found!!!!!"); console.log(price); res.render('home/home.ejs', { price: price }); }); }; 

但是我收到这个错误消息:

 db: [Circular] } TypeError: db.query is not a function 

我怎样才能解决这个问题?

Sequelize库正被分配给db对象上的一个variables。

错误是在第二个文件,而不是调用

 db.query 

我们应该打电话

 db.serialize.query 

在第一种情况下,我们调用了一个不存在的函数。 在另一种情况下,我们可以将查询函数分配给数据库对象上的一个属性。

 db.query = serialize.query 

现在我们可以像预期的那样运行db.query了。