簡體   English   中英

當我嘗試執行節點js應用程序時出現錯誤:findById不是函數

[英]there is an error when I am trying to execute a node js app: findById is not a function

發生錯誤:

findById不是函數

當我嘗試執行節點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')));

// findById方法

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);

// sequelize語句

sequelize
  // .sync({ force: true })
  .sync()
  .then(result => {
    return User.findById(1);
    // console.log(result);
  })
  .then(user => {
    if (!user) {
      return User.create({ name: 'Max', email: 'test@test.com' });
    }
    return User;
  })
  .then(user => {
    // console.log(user);

//端口配置

  app.listen(3000,() => console.log(`looking at local host port number 3000`));
})
.catch(err => {
  console.log(err);
});

此錯誤意味着您的用戶模型中未定義findById。 您需要在“ ./models/user”模塊中添加和導出此方法。

我認為您希望Model方法findByPk “通過其主鍵搜索單個實例。”)嘗試:

app.use((req, res, next) => {
  User.findByPk(1)
    .then(user => {

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM