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

Không thể nhận các giá trị thuộc tính dirtyPropertyNames cho các trường liên kết trong grails

Hiện tại, GORM cho MongoDB không cung cấp các giá trị chính xác trong dirtyPropertyNames đồng ruộng. Vì vậy, bạn phải sử dụng một trường được đưa vào cấp thấp hơn trong phiên bản miền, tức là $changedProperties .

Tuy nhiên, cũng có vấn đề với $changedProperties rằng ngay cả khi bạn liên kết một trường có cùng giá trị, thì $changedProperties sẽ có một mục cho nó. Vì vậy, bạn có thể chỉnh sửa nó nhiều hơn một chút như thế này để làm cho mã của bạn hoạt động:

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. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. JavaScript hết bộ nhớ trong khi phát trực tuyến tệp lớn

  2. Mã hóa MongoDB Data-at-Rest

  3. MongoDB - Sự khác biệt giữa chỉ mục trên trường văn bản và chỉ mục văn bản?

  4. Dấu thời gian Mongodb rất không chính xác - mongoose

  5. MongoDB Journaling:Là tệp tạp chí được sử dụng khi khách hàng yêu cầu viết nhật ký không phải và việc ghi nhật ký được kích hoạt trên Mongod