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. MongoDBで日付からミリ秒を取得する5つの方法

    2. MongoDBデータベーススキーマの設計

    3. 2番目のVMインスタンスからGoogleComputeEngineのMongoDBサーバーに接続できません

    4. マングースを介してアイテムをマングースアレイにプッシュします