环回 ctx.instance 与 ctx.data

Loopback ctx.instance vs ctx.data

我无法理解两者之间的区别 Ctx.instance Ctx.data 在环回 'before save ' 回调中。

差异在我们的文档中有所描述,请参阅 Operation hooks >> before save。在这里交叉发布相关内容:

Depending on which method triggered this hook, the context will have one of the following sets of properties:

  • Full save of a single model

    • (...)
    • instance - the model instance to be saved. The value is an instance of Model class.
  • Partial update of possibly multiple models

    • (...)
    • data - the (partial) data to apply during the update
    • currentInstance - the affected instance.

当您调用 Customer.create({/*...*/}) 时,将调用挂钩 ctx.instance 设置为您模型的实例,所有属性均从传递给 create() 的对象填充:

{
  name: 'Miroslav',
  isPreferred: false,
  // etc.
}       

当您调用 customer.patchAttributes({isPreferred: true}) 时,将使用 ctx.data 调用挂钩,其中仅包含提供给 patchAttributes() 的属性。

{
  isPreferred: true
}

您可以在源代码中了解更多信息,请参阅loopback-datasource-juggler/lib/dao.js