Usando TypeORM y obteniendo este error:
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()` insteadEl código al que corresponde está a continuación:
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); });No estoy seguro de dónde necesito usar el método .fork()
Enfrenté un problema similar hoy cuando actualicé la configuración de mikrorm de v4 a v5. Después de hacer un poco de RnD, encontré que los siguientes cambios me ayudaron a resolver el error mencionado.
MikroORM.init , pase la siguiente propiedad allowGlobalContext: true
em para create entrada en la base de datos. En su lugar, utilice el siguiente código const post = orm.em.fork({}).create(Post, { title: "my first post", });Los cambios anteriores deberían ayudarlo a corregir el error.
También soy muy nuevo en MikroORM. entonces, no estoy seguro de por qué aparece este error. Pero mi suposición sin educación es que están restringiendo el acceso a cualquier cambio en la instancia global de EntityManager em .
Después de investigar un poco, encontré esta solución:
hilado instalar dotenv
crear un archivo .env en la raíz del proyecto
En su archivo .env, pegue lo siguiente:
MIKRO_ORM_ALLOW_GLOBAL_CONTEXT = true
¡Problema resuelto!