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

时间:2016-06-05 04:30:52

标签: 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 'property'", { type:Sequelize.QueryTypes.SELECT})
   .then(function(properties) {
      res.json(properties)
  })
}

我可以使用model.findAll,但是当我尝试使用原始查询时,我得到的是TypeError:undefined不是函数。你能指出我在这段代码中做错了什么吗?

3 个答案:

答案 0 :(得分:17)

您需要在 query()实例上调用Sequelize

var Sequelize = require('sequelize');
var sequelize = new Sequelize('database', 'username', 'password');

sequelize.query("SELECT * FROM 'property'", { type:Sequelize.QueryTypes.SELECT})
   .then(function(properties) {
      res.json(properties)
  })

答案 1 :(得分:1)

您可以使用

const sql = "select * from ..."

 model.sequelize.query(sql, { type: model.sequelize.QueryTypes.SELECT })
.then(function (rows) {
    ... do a job on the query here...   
 })

答案 2 :(得分:1)

就我而言,我正在读取文件的内容并将其导入到迁移中:

const sqlFile = fs.readFileSync(file, {encoding: "UTF-8"});

await queryInterface.sequelize.query(sqlFile, {          
            raw: true,
            type: Sequelize.QueryTypes.RAW
          });

但是我收到了错误: Error importing: sql.trim is not a function

长话短说,我的 SQL 包含 `(反引号/反引号)字符,我需要转义它。

所以我一读文件就逃脱了:

const sqlFile = fs.readFileSync(file, {encoding: "UTF-8"}).replace('`', '\`');

问题解决了。但我花了一个多小时才弄明白。