如何在sequelize中使用aftercreate钩子创建另一个示例

uqdfh47h  于 2021-06-15  发布在  Mysql
关注(0)|答案(1)|浏览(296)

我需要创建另一个示例后,我的模型校友创建另一个usuario示例。
我正在使用sequelize创建一个 Alumnok 创建一个 Usuario 示例具有相同的 Usuario 的字段。

'use strict'
const models = require('../models');

module.exports = (sequelize, DataTypes) => {
    const Usuario = sequelize.define('Usuario', {
        email: {
            type: DataTypes.STRING(30),
            primaryKey: true
        },
        dni: DataTypes.STRING,
        direccion: DataTypes.STRING,
        nombre: DataTypes.STRING,
        apellidos: DataTypes.STRING,
        password: DataTypes.STRING,
        fechaNac: DataTypes.STRING,
        rol: DataTypes.INTEGER,
        foto: DataTypes.STRING
    }, {
        hooks:{
            afterCreate: (usuario) => {
                return models.Alumnok.create({
                    email: usuario.email,
                    dni: usuario.dni,
                    direccion: usuario.direccion,
                    nombre: usuario.nombre,
                    apellidos: usuario.apellidos,
                    password: usuario.password,
                    fechaNac: usuario.fechaNac,
                    rol: usuario.rol,
                    foto: usuario.foto
                })
                console.log("Se ha creado el usuario con el nombre: " + usuario.nombre);
            }
        }
    });
    Usuario.associate = function(models) {
        // associations can be defined here
    };
    return Usuario;
};

这是最终结果。

Unhandled rejection TypeError: Cannot read property 'create' of undefined
    at Function.afterCreate (C:\Users\Jose Fernando\Desktop\api\models\usuario.js:21:31)
    at Promise.each.hook (C:\Users\Jose Fernando\Desktop\api\node_modules\sequelize\lib\hooks.js:130:35)
    at tryCatcher (C:\Users\Jose Fernando\Desktop\api\node_modules\bluebird\js\release\util.js:16:23)
    at Object.gotValue (C:\Users\Jose Fernando\Desktop\api\node_modules\bluebird\js\release\reduce.js:155:18)
    at Object.gotAccum (C:\Users\Jose Fernando\Desktop\api\node_modules\bluebird\js\release\reduce.js:144:25)
    at Object.tryCatcher (C:\Users\Jose Fernando\Desktop\api\node_modules\bluebird\js\release\util.js:16:23)
    at Promise._settlePromiseFromHandler (C:\Users\Jose Fernando\Desktop\api\node_modules\bluebird\js\release\promise.js:512:31)
    at Promise._settlePromise (C:\Users\Jose Fernando\Desktop\api\node_modules\bluebird\js\release\promise.js:569:18)
    at Promise._settlePromiseCtx (C:\Users\Jose Fernando\Desktop\api\node_modules\bluebird\js\release\promise.js:606:10)
    at _drainQueueStep (C:\Users\Jose Fernando\Desktop\api\node_modules\bluebird\js\release\async.js:142:12)
    at _drainQueue (C:\Users\Jose Fernando\Desktop\api\node_modules\bluebird\js\release\async.js:131:9)
    at Async._drainQueues (C:\Users\Jose Fernando\Desktop\api\node_modules\bluebird\js\release\async.js:147:5)
    at Immediate.Async.drainQueues [as _onImmediate] (C:\Users\Jose Fernando\Desktop\api\node_modules\bluebird\js\release\async.js:17:14)
    at runCallback (timers.js:705:18)
    at tryOnImmediate (timers.js:676:5)
    at processImmediate (timers.js:658:5)
0h4hbjxa

0h4hbjxa1#

使用 sequelize.models.Alumnok.create 代替 models.Alumnok.create

相关问题