在 AdonisJS 中使用 .save() 函数时超出最大调用堆栈大小错误
Maximum call stack size exceeded error while using .save() function in AdonisJS
我正在尝试在 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
如有任何帮助,我们将不胜感激!
提前致谢
我想通了。我在用户模型中使用 getter 方法,没有 get
关键字(facepalm),这使得它自调用并因此发生递归。
我正在尝试在 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
如有任何帮助,我们将不胜感激! 提前致谢
我想通了。我在用户模型中使用 getter 方法,没有 get
关键字(facepalm),这使得它自调用并因此发生递归。