Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/image/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Merge 仅获取修改的值_Merge_Adonis.js - Fatal编程技术网

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

我永远也不会明白这种事情是怎么不在官方文件中的。谢谢我永远也不会明白这种事情是怎么不在官方文件中的。谢谢