Merge 仅获取修改的值
我正在更新模型,只需要返回已更改的值Merge 仅获取修改的值,merge,adonis.js,Merge,Adonis.js,我正在更新模型,只需要返回已更改的值 const data = request.only(['name', 'email', 'address', 'age']) const user = await user.findOrFail(data.id) user.merge({ nome: data.name, email: data.email, endereco: data.address, age: data.age }) await user.save() merge不会返回任何内容
const data = request.only(['name', 'email', 'address', 'age'])
const user = await user.findOrFail(data.id)
user.merge({ nome: data.name, email: data.email, endereco: data.address, age: data.age })
await user.save()
merge
不会返回任何内容,因此我如何才能返回该内容?基本上,它是user.dirty
属性,然后才能等待user.save()
要知道哪些属性已更新/将更新,您需要在用户模型实例保存()之前比较用户。$attributes
和用户。$originalAttributes
。“差异”存储在合并后的user.dirty
属性中
下面的屏幕截图是在我执行merge()
之前拍摄的,您可以看到user.$attributes
类似于user.$originalAttributes
,并且user.dirty
属性为空。(user.isDirty=false)
这张截图是在我做了merge()
之后拍摄的。用户first\u name
将被更新(改为'first name----changed'),而用户last\u name
将保持不变('last name'),您现在可以看到user.dirty={first\u name:'first name---changed'}
,它包含first\u name
键及其要更新的值。(user.isDirty=true)
所以。它是:
const user = await User.findOrFail(1)
console.log('exists user', user)
user.merge({
first_name: 'first name --- updated',
last_name: 'last name'
})
console.log('user before updated', user)
const output = user.isDirty ? user.dirty : {} // {} mean no attributes will be updated
console.log('attribute that will be updated', output)
await user.save()
return output
基本上,它是user.dirty
属性,然后才能等待user.save()
要知道哪些属性已更新/将更新,您需要在用户模型实例保存()之前比较用户。$attributes
和用户。$originalAttributes
。“差异”存储在合并后的user.dirty
属性中
下面的屏幕截图是在我执行merge()
之前拍摄的,您可以看到user.$attributes
类似于user.$originalAttributes
,并且user.dirty
属性为空。(user.isDirty=false)
这张截图是在我做了merge()
之后拍摄的。用户first\u name
将被更新(改为'first name----changed'),而用户last\u name
将保持不变('last name'),您现在可以看到user.dirty={first\u name:'first name---changed'}
,它包含first\u name
键及其要更新的值。(user.isDirty=true)
所以。它是:
const user = await User.findOrFail(1)
console.log('exists user', user)
user.merge({
first_name: 'first name --- updated',
last_name: 'last name'
})
console.log('user before updated', user)
const output = user.isDirty ? user.dirty : {} // {} mean no attributes will be updated
console.log('attribute that will be updated', output)
await user.save()
return output
我永远也不会明白这种事情是怎么不在官方文件中的。谢谢我永远也不会明白这种事情是怎么不在官方文件中的。谢谢