MongoDB
 sql >> база данни >  >> NoSQL >> MongoDB

Метакласът не е инстанция

Проблемът тук е, че вашата концепция е напълно погрешна. Вие присвоявате карта на класа, а не на екземпляра с този ред:

User.metaClass.dynamicAttributes = [:]

За да постигнете това, което търсите, трябва да направите следното:

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 
}

Сигурен съм, че има по-чист начин да направите това, но горното демонстрира решение, при което картата се инстанцира за всеки екземпляр, а не във всички екземпляри.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Състоянието на MongoDB е неуспешно след редактиране на mongo.conf (кодът е излязъл, статус=2)

  2. Защо Mongo прави заявка за нулеви филтри във FETCH след изпълнение на IXSCAN

  3. Как да актуализирате вложен масив

  4. MongoDB $push

  5. Meteor предава идентификатор във връзка