ahzep
ahzep

Reputation: 180

findAll() is not a function sequelize

I'm making an app with nodejs and I want to conect to my models but I keep getting the same error:

TypeError: user.findAll is not a function

routes/user.js

const express = require('express');
const router = express.Router();
const db = require('../config/database');
const user = require('../models/users');

router.get('/', (req, res) => user.findAll()
.then(users =>  {
    console.log(users)
    res.sendStatus(200);
     })
.catch(err => console.log(err)));

module.exports = router;

models/user.js

'use strict';

const Sequelize = require('sequelize');
const db = require('../config/database')

module.exports = (sequelize, DataTypes) => {
  const users = sequelize.define('users', {
    id: DataTypes.INTEGER,
    name: DataTypes.STRING,
    age: DataTypes.INTEGER,
    email: DataTypes.STRING,
    country: DataTypes.STRING,
    state: DataTypes.STRING,
    city: DataTypes.STRING
  }, {});
  users.associate = function(models) {
    // associations can be defined here
  };
  return users;
};

Upvotes: 0

Views: 3765

Answers (2)

ahzep
ahzep

Reputation: 180

I found out the error, I wasn't importing/exporting properly, I changed my models/user.js file to:

'use strict';
const Sequelize = require('sequelize');
const db = require ('../config/database')
const DataTypes = require('sequelize/lib/data-types')

const User = db.define('users', {
  name: DataTypes.STRING,
  age: DataTypes.INTEGER,
  email: DataTypes.STRING,
  country: DataTypes.STRING,
  state: DataTypes.STRING,
  city: DataTypes.STRING

  }, {});
  User.associate = function(models) {
    // associations can be defined here
  };
module.exports = User

Upvotes: 2

Yogesh.Kathayat
Yogesh.Kathayat

Reputation: 1004

you should use db.users.findAll() instead of user.findAll(). it will work

Upvotes: 2

Related Questions