sql >> Databáze >  >> NoSQL >> MongoDB

Delegát metatřídy není instancí

Problém je v tom, že váš koncept je zcela chybný. Mapu přiřazujete ke třídě a ne instanci s tímto řádkem:

User.metaClass.dynamicAttributes = [:]

Abyste dosáhli toho, co chcete udělat, musíte udělat následující:

User.metaClass.propertyMissing = { String name ->
  if (!delegate.dynamicAttributes) delegate.dynamicAttributes = [:]
  delegate.dynamicAttributes[name] 
}  
User.metaClass.propertyMissing = { String name, value ->     
  if (!delegate.dynamicAttributes) delegate.dynamicAttributes = [:]
  delegate.dynamicAttributes[name] = value 
}

Jsem si jistý, že existuje čistší způsob, jak toho dosáhnout, ale výše uvedené ukazuje řešení, kde je mapa instancí pro každou instanci a ne ve všech instancích.



  1. Jak spustit mongodb z dockerfile

  2. Redis failover s StackExchange / Sentinel z C#

  3. MongoDB agreguje pole, aniž by předem znal všechna pole

  4. Mongoose/NextJS - Model není definován / Po zkompilování nelze přepsat model