Node.js Sequelize查询给出TypeError:undefined不是函数
我正在为我的节点应用程序使用express和sequelize。在控制器文件上,我有以下内容:Node.js Sequelize查询给出TypeError:undefined不是函数,node.js,sequelize.js,Node.js,Sequelize.js,我正在为我的节点应用程序使用express和sequelize。在控制器文件上,我有以下内容: var models = require('../models'), Property = models.property, Sequelize = require('sequelize'); module.exports = function(req, res){ Sequelize.query("SELECT * FROM 'pro
var models = require('../models'),
Property = models.property,
Sequelize = require('sequelize');
module.exports = function(req, res){
Sequelize.query("SELECT * FROM 'property'", { type:Sequelize.QueryTypes.SELECT})
.then(function(properties) {
res.json(properties)
})
}
我可以很好地使用model.findAll,但是当我尝试使用原始查询时,我得到了TypeError:undefined不是一个函数。你能指出我在这段代码中做错了什么吗 您需要在
Sequelize
实例上调用query()
:
你可以用
const sql = "select * from ..."
model.sequelize.query(sql, { type: model.sequelize.QueryTypes.SELECT })
.then(function (rows) {
... do a job on the query here...
})
在我的例子中,我正在读取一个文件的内容,并在迁移中导入该文件,其中包括:
const sqlFile = fs.readFileSync(file, {encoding: "UTF-8"});
await queryInterface.sequelize.query(sqlFile, {
raw: true,
type: Sequelize.QueryTypes.RAW
});
但我收到了错误信息:
导入时出错:sql.trim不是函数
长话短说,我的SQL包含`(backquote/backtick)字符,我需要对其进行转义
所以我一看文件就逃过了它:
const sqlFile = fs.readFileSync(file, {encoding: "UTF-8"}).replace('`', '\`');
问题解决了。但我花了一个多小时才弄明白。类型错误消失了,但现在我得到了以下信息:未处理的拒绝SequelizeDatabaseError:在“属性”处或附近的语法错误。有什么想法吗?@iMad当然,删除
属性
周围的单引号。仍然不是seeder/migration up()方法中的函数。那该怎么办?谢谢你-今天就点击这个。在迁移中找到queryInterface.sequelize.query
的好例子很困难。
const sqlFile = fs.readFileSync(file, {encoding: "UTF-8"}).replace('`', '\`');