Mongoose - 保存时更新引用的文档

时间:2017-01-05 10:40:27

标签: javascript node.js mongodb mongoose

如果我有一个Schema,它有一个对另一个Schema的引用数组,有没有办法可以用一个端点更新这两个Document?

这是我的架构:

CompanySchema = new Schema({
  addresses: [{
    type: Schema.Types.ObjectId,
    ref: 'Address'
  }]
});

我想将CompanyAddress对象一起发送到/companies/:id/edit。使用此终结点,我想同时修改CompanyAddress上的属性。

Rails中,您可以使用类似嵌套属性的内容进行一次大UPDATE次调用,并且会更新Company 更新或添加{ {1}}也是。

知道如何在Address中执行此操作?

1 个答案:

答案 0 :(得分:1)

Mongooseissue

中不支持级联保存

但是有插件(例如:cascading-relations)在嵌套populate objects上实现此行为。

请记住,mongodb是not a fully transactional database,并且使用各种insert()/ update()op调用实现“大保存”,并且您(或插件)必须处理错误和回滚。

级联保存示例:

company.save()
  .then(() => Promise.all(company.addresses.map(address => {
    /* update fkeys if needed */
    return address.save()
    }))
  .catch(err => console.error('something went wrong...', err))