繁体   English   中英

在创建之前对我的续集模型不起作用

[英]Before create doesn't work on my sequelize model

在创建之前对我的续集模型不起作用我创建了一个模板,但由于某种原因我之前的创建不起作用,我不知道它可以是什么了。

async createUser(req,res){
    const { name,email,login,password } = req.body
        const verify = await Users.findOne({where:{login: login}});

        if(verify){ return res.status(400).json({result: 'User already exists'})}

        const user = await Users.create({name,email,login,password});
}

模型:

class Users extends Model {
    static init(sequelize){
        super.init({
            name: DataTypes.STRING,
            email: DataTypes.STRING,
            login: DataTypes.STRING,
            password: DataTypes.STRING,
        }, {sequelize, tableName:'users'},
         {
            hooks: {
              beforeCreate: (user) => {
                console.log('ae');
              },

            },
        }
        )

不要输入我之前,不要返回我的 console.log

您应该将hooks选项放在第二个对象参数中。 Model.init()接口是:

public static init<M extends Model = Model>(this: ModelCtor<M>, attributes: ModelAttributes, options: InitOptions<M>): void;

这是一个工作示例:

import { sequelize } from '../../db';
import { Model, DataTypes } from 'sequelize';

class User extends Model {}
User.init(
  {
    name: DataTypes.STRING,
    email: DataTypes.STRING,
    login: DataTypes.STRING,
    password: DataTypes.STRING,
  },
  {
    sequelize,
    tableName: 'users',
    hooks: {
      beforeCreate: (user) => {
        console.log('======== ae ========');
      },
    },
  },
);

(async function test() {
  try {
    await sequelize.sync({ force: true });
    await User.create({ name: 'Alanna', email: 'example@gmail.com', login: 'value', password: '123' });
  } catch (error) {
    console.log(error);
  } finally {
    await sequelize.close();
  }
})();

执行结果:

======== ae ========
Executing (default): INSERT INTO "users" ("id","name","email","login","password") VALUES (DEFAULT,$1,$2,$3,$4) RETURNING *;

现在, User模型的beforeCreate钩子工作正常。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM