Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/36.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js Sequelize查询给出TypeError:undefined不是函数_Node.js_Sequelize.js - Fatal编程技术网

Node.js Sequelize查询给出TypeError:undefined不是函数

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

我正在为我的节点应用程序使用express和sequelize。在控制器文件上,我有以下内容:

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('`', '\`');