为什么db.findAll()不是函数?

时间:2019-05-26 09:51:25

标签: javascript node.js express orm sequelize.js

我用sequelize创建数据库实例,但是它没有诸如findAll()之类的方法。我在做什么错了?

const Sequelize = require('sequelize');
const router = require('express').Router();

const db = new Sequelize('web-prog', 'postgres', '1234', {
    host: 'localhost',
    dialect: 'postgres',
    logging: false
});

router.get('/', (req, res) => {
    db
        .findAll()
        .then(itemlist => res.json(itemlist))
        .catch(err => console.log(err))
});

module.exports = { db, router };

//然后我需要这样

const db = require('./database').db;
  

TypeError:db.findAll不是函数

1 个答案:

答案 0 :(得分:1)

您正尝试在findAll()连接上调用Sequelize,但是在Model上找到了此方法,这就是您收到错误的原因。

创建一个名为MyModel的模型

module.exports = function Model(db, DataTypes) {
  const MyModel = db.define('myModel', {/* fields */, {/* options */});
  return MyModel;
}

然后您将加载模型-

  const db = require('./database').db;
  const myModel = db.import(path.join(__dirname, '/', 'myModel'));
  myModel.findAll() <-- this will exist and return a promise