簡體   English   中英

如何在 Express.JS 應用程序中引用 Sequelize class

[英]How to reference a Sequelize class in a Express.JS app

這是我的 user.js Sequelize class:

'use strict';
const {Sequelize} = require('sequelize');
const {
  Model
} = require('sequelize');
module.exports = (sequelize, DataTypes) => {
  class User extends Model {
    /**
     * Helper method for defining associations.
     * This method is not a part of Sequelize lifecycle.
     * The `models/index` file will call this method automatically.
     */
     static init(sequelize) {
        super.init(
        {
          name: Sequelize.STRING,
        },
        {
          sequelize,
        });
        this.addHook('beforeSave', async (user) => {
          return user.id = uuid();
        });
        return this;
      }
      static associate(models) {
        // define association here
        User.hasMany(UserRole,
          {
            foreignKey: {
              field:'UserId',
              allowNull: false,
            },
          });
      }
  }
  User.init({
    Id: DataTypes.UUID,
    Name: DataTypes.STRING,
    UserName: DataTypes.STRING,
    Email: DataTypes.STRING,
    Password: DataTypes.STRING,
    PhoneNumber: DataTypes.STRING,
    MobileNumber: DataTypes.STRING,
    DateOfBirth: DataTypes.DATE,
    LockoutEnabled: DataTypes.BOOLEAN,
    LockoutEnd: DataTypes.DATE
  }, {
    sequelize,
    modelName: 'User',
  });
  return User;
};

我正在嘗試聲明一個實例來對我的數據庫執行 findAll 調用。

到目前為止,這就是我所擁有的,它一直在說 findAll 不是 function:

const {Sequelize} = require('sequelize');
const {userModel}= require('../../models/user');


function GetAll(){
  return user.findAll();
}



module.exports = {
  GetAll,
}

我是 Express JS 的新手,對於 Sequelize 更是如此。

查看這里的問題和我的回答,了解如何注冊模型和關聯。
你導出一個 function 返回一個注冊的 model,所以你需要先調用它傳遞一個 Sequelize 實例和數據類型,然后你可以使用返回的 model 來調用像findAll這樣的方法。 最好先注冊所有模型,然后才注冊它們之間的所有關聯(請參閱提到的鏈接)。

暫無
暫無

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

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