Почему db.findAll () не является функцией? - PullRequest
0 голосов
/ 26 мая 2019

Я создаю и экземпляр базы данных с помощью 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 Ответ

1 голос
/ 26 мая 2019

Вы пытаетесь вызвать 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
...