我开始接触组织的Groovy / Grails后端,并负责更新User
域对象上的Document
。问题是,在从前端命中了具有附加正确参数的更新端点后,后端将使用不变的Document
对象进行响应。
这是代码:
if (requestParams.userEmail) {
def contact = User.findByEmail(requestParams.userEmail)
log.debug('Reading user found by passed email contact={} error={}',contact, contact.errors.allErrors.inspect())
if (!contact) {
response.status = 400
render WebserviceError.badInput as JSON
return
}
document.user = contact
document.user.save(flush: true)
}
document.save(flush: true)
render survey as JSON
前端返回一个Promise,并且我正在记录Promise响应,它显示了一个具有相同附加用户的不变Document对象。我没有收到400,因此看来已成功找到联系人。
我尝试将
flush:true
添加到user.save
调用和document.save
调用中,但这没有帮助。我的代码中有明显的错误行为吗?
最佳答案
好的db操作应该使用@Transactional在服务中,而不是在 Controller 中,最好是gorm版本而不是spring版本。您不需要使用flush:true。然后从服务中返回您可以返回到 Controller 并以JSON形式呈现的服务。
关于grails - 如何在Groovy/Grails中正确保存对域对象的更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55766387/