[英]error on sequelize raw query: query is not a function
我正在尝试在快速应用程序中使用来自 sequelize 的原始查询。 我的文件夹结构是:
/
/index.js
/models/index.js
/models/price.js
/controllers/price.js
我想使用我已经在 /models/index.js 中从控制器定义的 sequelize。
这是/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 对象上的一个变量。
错误在第二个文件中而不是调用
db.query
我们应该打电话
db.serialize.query
在第一种情况下,我们调用了一个不存在的函数。 在另一种情况下,我们可以将查询函数分配给 db 对象上的一个属性。
db.query = db.serialize.query
或者你可以使用 ES6 解构
db.query = { query } = db.serialize
现在我们可以按预期运行db.query
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.