sequelize.query()不是函数

Nit*_*jia 5 node.js sequelize.js

我是新手。我正在尝试使用行查询,但出现错误。

码:

const sequelize = require('sequelize');

sequelize.query("SELECT * from users").then(results => {
      console.log(results);
   })
Run Code Online (Sandbox Code Playgroud)

调用此API时出错:

(node:2380) UnhandledPromiseRejectionWarning: TypeError: sequelize.query is not a function
    at Promise (C:\NodejsProject\mars\app\schedule\models\schedule.js:247:17)
    at new Promise (<anonymous>)
Run Code Online (Sandbox Code Playgroud)

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

Viv*_*shi 8

您不能sequelize直接从中使用require('sequelize');,首先我们需要创建该实例,然后将根据数据库详细信息创建该实例,因此 sequelize可以知道在哪个平台上必须运行查询的数据库

这是一个基本的代码段,仅供参考:

const Sequelize = require('sequelize');

const sequelize = new Sequelize('database', 'username', 'password', {
  host: 'localhost',
  dialect: 'mysql'|'sqlite'|'postgres'|'mssql',

  pool: {
    max: 5,
    min: 0,
    acquire: 30000,
    idle: 10000
  },

  // SQLite only
  storage: 'path/to/database.sqlite',

  // http://docs.sequelizejs.com/manual/tutorial/querying.html#operators
  operatorsAliases: false
});

sequelize.query("SELECT * from users").then(results => {
    console.log(results);
});
Run Code Online (Sandbox Code Playgroud)

有关更多详细信息:请阅读


Nel*_*les 8

如果你在外部文件中运行你的数据库配置并且想要额外的层来防止 SQL 注入 ./database/dbs.js

const Sequelize = require('sequelize')
const db = {}
const sequelize = new Sequelize('dbname', 
                                'username', 
                                'password', {
  host: 'localhost',
  dialect: 'mysql',
  logging: console.log,
  freezeTableName: true,

  pool: {
    max: 5,
    min: 0,
    acquire: 30000,
    idle: 10000
  }
})

db.sequelize = sequelize
db.Sequelize = Sequelize

module.exports = db
Run Code Online (Sandbox Code Playgroud)

然后在您要使用的文件中:

const db        = require('../database/db')
...
    const newDbName = 'myNewDb'
    db.sequelize.query(`CREATE DATABASE IF NOT EXISTS ${newDbName} `, {
        type: db.sequelize.QueryTypes.CREATE
    }).then( () => {
        res.send('ok done creating ' + req.body.newDbName).end()
    }).catch( err => {
        res.status(500).send('Err executing command ' + err).end()
    })
Run Code Online (Sandbox Code Playgroud)