Validation Error: Using global entity manager instance methods for context specific actions is disallowed
Validation Error: Using global entity manager instance methods for context specific actions is disallowed
使用 TypeORM 并出现此错误:
ValidationError: Using global EntityManager instance methods for context specific actions is disallowed.
If you need to work with the global instance's identity map, use `allowGlobalContext` configuration option or `fork()` instead
对应的代码如下:
import { MikroORM } from "@mikro-orm/core";
import { __prod__ } from "./constants";
import { Post } from "./entities/Post";
import mikroConfig from "./mikro-orm.config";
const main = async () => {
const orm = await MikroORM.init(mikroConfig);
const post = orm.em.create(Post, {
title: "my first post",
});
await orm.em.persistAndFlush(post);
await orm.em.nativeInsert(Post, { title: "my first post 2" });
};
main().catch((error) => {
console.error(error);
});
我不确定我需要在哪里使用 .fork() 方法
今天我将 mikrorm 设置从 v4 升级到 v5 时遇到了类似的问题。在做了一些 RnD 之后,我发现以下更改帮助我解决了提到的错误。
- 在传递给
MikroORM.init
调用的配置对象中,传递以下 属性
allowGlobalContext: true
- 不要直接使用
em
到 create
数据库条目。而是使用以下代码
const post = orm.em.fork({}).create(Post, {
title: "my first post",
});
以上更改应该可以帮助您修复错误。
我对 MikroORM 也很陌生。所以,我不确定为什么会出现此错误。但我没有根据的猜测是,他们限制访问对全局 EntityManager em
实例的任何更改。
经过一番挖掘,我找到了这个解决方案:
yarn 安装 dotenv
在项目的根目录中创建一个 .env 文件
在您的 .env 文件中粘贴以下内容:
MIKRO_ORM_ALLOW_GLOBAL_CONTEXT = true
问题已解决!
使用 TypeORM 并出现此错误:
ValidationError: Using global EntityManager instance methods for context specific actions is disallowed.
If you need to work with the global instance's identity map, use `allowGlobalContext` configuration option or `fork()` instead
对应的代码如下:
import { MikroORM } from "@mikro-orm/core";
import { __prod__ } from "./constants";
import { Post } from "./entities/Post";
import mikroConfig from "./mikro-orm.config";
const main = async () => {
const orm = await MikroORM.init(mikroConfig);
const post = orm.em.create(Post, {
title: "my first post",
});
await orm.em.persistAndFlush(post);
await orm.em.nativeInsert(Post, { title: "my first post 2" });
};
main().catch((error) => {
console.error(error);
});
我不确定我需要在哪里使用 .fork() 方法
今天我将 mikrorm 设置从 v4 升级到 v5 时遇到了类似的问题。在做了一些 RnD 之后,我发现以下更改帮助我解决了提到的错误。
- 在传递给
MikroORM.init
调用的配置对象中,传递以下 属性
allowGlobalContext: true
- 不要直接使用
em
到create
数据库条目。而是使用以下代码
const post = orm.em.fork({}).create(Post, {
title: "my first post",
});
以上更改应该可以帮助您修复错误。
我对 MikroORM 也很陌生。所以,我不确定为什么会出现此错误。但我没有根据的猜测是,他们限制访问对全局 EntityManager em
实例的任何更改。
经过一番挖掘,我找到了这个解决方案:
yarn 安装 dotenv
在项目的根目录中创建一个 .env 文件
在您的 .env 文件中粘贴以下内容:
MIKRO_ORM_ALLOW_GLOBAL_CONTEXT = true
问题已解决!