gpt4 book ai didi

javascript - 在创建之前不适用于我的 Sequelize 模型

转载 作者:行者123 更新时间:2023-12-03 22:26:23 25 4
gpt4 key购买 nike

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

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

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

关于javascript - 在创建之前不适用于我的 Sequelize 模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59283808/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com