sql >> Database >  >> NoSQL >> MongoDB

Metaclass-deligate is geen instantie

Het probleem hier is dat uw concept volledig gebrekkig is. U wijst een kaart toe aan de klasse en niet aan de instantie met deze regel:

User.metaClass.dynamicAttributes = [:]

Om te bereiken wat u wilt doen, moet u het volgende doen:

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 
}

Ik weet zeker dat er een schonere manier is om dit te doen, maar het bovenstaande toont een oplossing waarbij de kaart per instantie wordt weergegeven en niet voor alle instanties.



  1. Twee documenten vinden in MongoDB die een sleutelwaarde delen

  2. `velden kunnen niet identiek zijn:' ' en ' '' mongoimport-fout

  3. MongoDb $lookup-query met meerdere velden uit objectarray

  4. 5 manieren om rijen te selecteren met de maximale waarde voor hun groep in SQL