sql >> Database >  >> NoSQL >> MongoDB

Kan de waarden van de eigenschappen van dirtyPropertyNames voor associatievelden in graals niet ophalen

Momenteel geeft GORM voor MongoDB geen correcte waarden in de dirtyPropertyNames veld. U moet dus een ander geïnjecteerd veld op een lager niveau gebruiken in de domeininstantie, d.w.z. $changedProperties .

Maar er is ook een probleem met de $changedProperties dat zelfs als u een veld bindt met dezelfde waarde, de $changedProperties zal er een vermelding voor hebben. Dus je kunt het een beetje meer op deze manier aanpassen om je code te laten werken:

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. MongoDB:controleer of de waarde null is of dat de array leeg is

  2. 2 benaderingen voor het volgen van online gebruikers met Redis. Welke is sneller?

  3. Mongodb TTL verloopt documenten vroegtijdig

  4. Hoe maak je een CUPS-service voor mongoDB?