sql >> データベース >  >> NoSQL >> MongoDB

grailsの関連付けフィールドのdirtyPropertyNamesプロパティ値を取得できません

    現在、GORMforMongoDBはdirtyPropertyNamesに正しい値を提供していません 分野。したがって、ドメインインスタンスで別の下位レベルの挿入フィールドを使用する必要があります。つまり、$changedProperties

    ただし、$changedPropertiesにも問題があります。 同じ値のフィールドをバインドした場合でも、$changedProperties エントリがあります。したがって、コードを機能させるために、このようにもう少し微調整することができます。

    def beforeUpdate() {
        def instance = this
        Map updatedFields = instance.$changedProperties
    
        updatedFields.each { name, value ->
            if (updatedFields[name] != instance[name]) {
                println "Field value $name is updated"
                if (name == "addresses") {
                    // I've not run this for a long time, just confirm the old and new addresses values and swap the assignment of below lines
                    List newAddresses = updatedFields[name]
                    List oldAddresses = instance[name]
    
                    newAddresses.each { address ->
                        if (!address.id) {
                            println "Got new address: $address.status"
                        } else {
                            Address oldAddress = oldAddresses.find { it.id == address.id }
                            if (!oldAddress) { // This is just an edge condition
                                println "Got new address: $address.status"
                            } else if (oldAddress.status != address.staus) {
                                println "$address status is updated to $address.status"
                            }
                        }
                    }
                }
            }
        }
    }
    



    1. mongoシェルを使用して複数のjsファイルをデータベースにロードする方法は?

    2. NoSQLデータベース-ログ処理/集計とロールアップの良い候補ですか?

    3. Stripewebhooksイベントの順序

    4. docker-composeを使用してレプリカが設定されたmongoコンテナーを実行できません