sql >> Databasteknik >  >> NoSQL >> MongoDB

Metaclass deligate är inte instans

Problemet här är att ditt koncept är helt felaktigt. Du tilldelar en karta till klassen och inte instansen med denna rad:

User.metaClass.dynamicAttributes = [:]

För att uppnå det du vill göra måste du göra följande:

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 
}

Jag är säker på att det finns ett renare sätt att göra detta på, men ovanstående visar en lösning där kartan instanseras per instans och inte över alla instanser.



  1. Ångra convertToCapped till en samling

  2. BadValue Ogiltigt eller ingen användarspråk inställd. Se till att miljövariablerna LANG och/eller LC_* är korrekt inställda

  3. Kan inte binda TCP-lyssnaren *:6379 med Redis på Windows

  4. Mongodb:Prestandapåverkan av $HINT