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

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

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

  1. 'use strict'
  2. const models = require('../models');
  3. module.exports = (sequelize, DataTypes) => {
  4. const Usuario = sequelize.define('Usuario', {
  5. email: {
  6. type: DataTypes.STRING(30),
  7. primaryKey: true
  8. },
  9. dni: DataTypes.STRING,
  10. direccion: DataTypes.STRING,
  11. nombre: DataTypes.STRING,
  12. apellidos: DataTypes.STRING,
  13. password: DataTypes.STRING,
  14. fechaNac: DataTypes.STRING,
  15. rol: DataTypes.INTEGER,
  16. foto: DataTypes.STRING
  17. }, {
  18. hooks:{
  19. afterCreate: (usuario) => {
  20. return models.Alumnok.create({
  21. email: usuario.email,
  22. dni: usuario.dni,
  23. direccion: usuario.direccion,
  24. nombre: usuario.nombre,
  25. apellidos: usuario.apellidos,
  26. password: usuario.password,
  27. fechaNac: usuario.fechaNac,
  28. rol: usuario.rol,
  29. foto: usuario.foto
  30. })
  31. console.log("Se ha creado el usuario con el nombre: " + usuario.nombre);
  32. }
  33. }
  34. });
  35. Usuario.associate = function(models) {
  36. // associations can be defined here
  37. };
  38. return Usuario;
  39. };

这是最终结果。

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

0h4hbjxa1#

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

相关问题