MongoDB
 sql >> Cơ Sở Dữ Liệu >  >> NoSQL >> MongoDB

Metaclass deligate không phải là phiên bản

Vấn đề ở đây là khái niệm của bạn hoàn toàn thiếu sót. Bạn đang gán một bản đồ cho Lớp chứ không phải bản đồ với dòng này:

User.metaClass.dynamicAttributes = [:]

Để đạt được những gì bạn đang mong muốn, bạn cần thực hiện những điều sau:

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 
}

Tôi chắc chắn rằng có một cách dễ dàng hơn để thực hiện việc này nhưng phần trên cho thấy một giải pháp trong đó bản đồ được cân bằng cho mỗi trường hợp chứ không phải trên tất cả các trường hợp.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Tìm số lượng tất cả các khoảng chồng chéo

  2. Chèn Mảng bên trong một đối tượng trong MongoDB

  3. Cách sử dụng URL mới từ mongodb 3.6 để kết nối từ golang

  4. MongoDB:Truy vấn các mảng lồng nhau

  5. Cách tìm bằng id trong golang và mongodb