Javascript Mongoose-保存时更新引用的文档
如果我有一个模式,其中包含对另一个模式的引用数组,是否有一种方法可以使用一个端点更新这两个文档 这是我的模式:Javascript Mongoose-保存时更新引用的文档,javascript,node.js,mongodb,mongoose,Javascript,Node.js,Mongodb,Mongoose,如果我有一个模式,其中包含对另一个模式的引用数组,是否有一种方法可以使用一个端点更新这两个文档 这是我的模式: CompanySchema = new Schema({ addresses: [{ type: Schema.Types.ObjectId, ref: 'Address' }] }); 我想向/companys/:id/edit发送一个带有完整地址的公司。有了这个端点,我想同时编辑公司和地址上的属性 在Rails中,您可以使用类似嵌套属性的东西来执行一个大型
CompanySchema = new Schema({
addresses: [{
type: Schema.Types.ObjectId,
ref: 'Address'
}]
});
我想向/companys/:id/edit
发送一个带有完整地址的公司
。有了这个端点,我想同时编辑公司
和地址
上的属性
在Rails
中,您可以使用类似嵌套属性的东西来执行一个大型更新
调用,它将更新公司
,并更新或添加地址
您知道如何在Mongoose
中执行此操作吗?级联保存在Mongoose
()中不受本机支持
但是有一些插件(例如:)在嵌套系统上实现了这种行为
记住mongodb是,通过各种insert()/update()操作调用实现“大保存”,您(或插件)必须处理错误并回滚
级联保存的示例:
company.save()
.then(() => Promise.all(company.addresses.map(address => {
/* update fkeys if needed */
return address.save()
}))
.catch(err => console.error('something went wrong...', err))
考虑到这正处于开发的早期阶段,如果我想做这样的事情,那么替换Mongoose
甚至MongoDB
来实现这一点是有意义的吗?最好只有一个页面,我可以在其中更新公司及其地址,因此在这种情况下,最好使用不同的数据库或重新构建我的模型,对吗?如果确实需要将其保存在事务中以实现强一致性,最好使用RDBMS引擎。但我认为这不是你的情况,你可以通过自定义级联保存逻辑成功地处理它。我知道了,是的,我查看了你提到的级联关系库,但老实说,这方面的文档让我非常困惑,甚至不知道从何处开始尝试这种逻辑。所以不确定该朝哪个方向走。据我所知,我将通过
向我的地址
添加$,但我不确定从那里该怎么办。例如,我想将我完整的公司
对象传递到创建
端点或更新
端点,并保存/更新相关的地址
,如果逻辑简单,您可以自己实现。我在mongoose中添加了一个使用内置承诺支持的示例(未经测试)。是否可以尝试一下,应该简单到只添加$through并应用您提到的保存逻辑?