Ошибка создания пользователя вручную в Node.js с использованием Mysql Database "TypeError: User.findById не является функцией - PullRequest
0 голосов
/ 06 апреля 2020

Мне нужна помощь по этой ошибке «Ошибка типа: User.findById не является функцией», когда я создаю пользователя вручную и пытаюсь найти пользователя по идентификатору.

Часть кода с ошибкой

продолжение

  .sync()
  .then(result => {
    return User.findById(1);
  })

  .then(user => {
    if (!user) {
      return User.create({ name: 'john', email: 'john@test.com' });
    }
    return user;
  })

  .then(user => {
    // console.log(user);
    app.listen(3000);
  })

  .catch(err => {
    console.log(err);
  });

См. Мой код ниже

модель пользователя

const Sequelize = require('sequelize');
const sequelize = require('../util/database');
const User = sequelize.define('user', {

  id: {
    type: Sequelize.INTEGER,
    autoIncrement: true,
    allowNull: false,
    primaryKey: true
  },
  name: Sequelize.STRING,    
  email: Sequelize.STRING
});

module.exports = User;

Приложение. js

const path = require('path');
const express = require('express');
const bodyParser = require('body-parser');
const errorController = require('./controllers/error');
const sequelize = require('./util/database');
const Product = require('./models/product');
const User = require('./models/user');
const app = express();

app.set('view engine', 'ejs');
app.set('views', 'views');

const adminRoutes = require('./routes/admin');
const shopRoutes = require('./routes/shop');

app.use(bodyParser.urlencoded({ extended: false }));

app.use(express.static(path.join(__dirname, 'public')));

app.use((req, res, next) => {
  User.findById(1)
    .then(user => {
      req.user = user;
      next();
    })
    .catch(err => console.log(err));
});

app.use('/admin', adminRoutes);
app.use(shopRoutes);
app.use(errorController.get404);
Product.belongsTo(User, { constraints: true, onDelete: 'CASCADE' });

User.hasMany(Product);

продолжение

.sync()
.then(result => {
 return User.findById(1);    
})

.then(user => {
 if (!user) {
   return User.create({ name: 'john', email: 'john@test.com' });
 }
 return user;
})

.then(user => {
 // console.log(user);
 app.listen(3000);
})

.catch(err => {
 console.log(err);
});

1 Ответ

0 голосов
/ 13 апреля 2020

В sequelize v5 нет метода, подобного Model.findById. Вы можете использовать Модель. findByPk или Model.findOne как это:

Model.findOne({ where: { id: 1 } })
...