javascript - 在 AdonisJS 中使用 .save() 函数时超出最大调用堆栈大小错误

标签 javascript node.js adonis.js

我正在尝试在 AdonisJS 中创建一个播种器文件。我有一个简单的播种器文件,它在数据库中添加了 2 个用户。
UserSeeder.js

'use strict'

/*
|--------------------------------------------------------------------------
| UserSeeder
|--------------------------------------------------------------------------
|
| Make use of the Factory instance to seed database with dummy data or
| make use of Lucid models directly.
|
*/

/** @type {import('@adonisjs/lucid/src/Factory')} */
// const Factory = use('Factory')

const User = use('App/Models/User')

class UserSeeder {
  async run () {

    let users = [
      {
        firstname: 'Admin',
        lastname: 'User',
        email: 'admin@user.com',
        password: 'abc123',
        role_id: 1,
        is_active: 1
      }, {
        firstname: 'User',
        lastname: 'John',
        email: 'user@user.com',
        password: 'abc123',
        role_id: 2,
        is_active: 1
      }
    ];
    
    for (var i = 0; i < users.length; i++) {
      const user = new User();
      user.firstname = users[i].firstname;
      user.lastname = users[i].lastname;
      user.email = users[i].email;
      user.password = users[i].password;
      user.role_id = users[i].role_id;
      user.is_active = users[i].is_active;
      
      await user.save();
    }

  }
}

module.exports = UserSeeder

当我运行此文件时,它显示“RangeError:超出最大调用堆栈大小”。
令人沮丧的部分是我有另一个运行良好的播种器文件。这是工作正常:
RoleSeeder.js
'use strict'

/*
|--------------------------------------------------------------------------
| RoleSeeder
|--------------------------------------------------------------------------
|
| Make use of the Factory instance to seed database with dummy data or
| make use of Lucid models directly.
|
*/

/** @type {import('@adonisjs/lucid/src/Factory')} */
const Factory = use('Factory')

const Role = use('App/Models/Role');

class RoleSeeder {
  async run () {
    let roles = ['Admin', 'Manager'];
    for (var i = 0; i < roles.length; i++) {
      const role = new Role()
      role.name = roles[i]

      await role.save()
    }
  }
}

module.exports = RoleSeeder

任何帮助,将不胜感激!
提前致谢

最佳答案

我解决了这个问题。我在没有 get 的用户模型中使用 getter 方法关键字(facepalm)使其自我调用并因此发生递归。

关于javascript - 在 AdonisJS 中使用 .save() 函数时超出最大调用堆栈大小错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65108486/

相关文章:

javascript - 将 ul 的值获取到未隐藏的变量中

windows - 'npm' 不是内部或外部命令、可运行程序或批处理文件

javascript - puppeteer:从 NodeList 获取 HTML?

yarnpkg - yarn 全局安装 : "adonis: command not found"

testing - adonis 测试返回消息 : "superagent: Enable experimental feature http2"

javascript - 使用 PHP include 函数将 JSON 文件添加到 JS

php - Javascript 日期选择器在 ajax 中不起作用

javascript - 添加带有多个参数的事件监听器,稍后将其删除

mysql - 如何在 Coffeescript 中创建 MySQL 数据库连接

javascript - 如何按时间间隔调用生成器(异步)函数