我正在使用Mongoid为我的Rails应用程序。目前我有这两个模型:
class User
include Mongoid::Document
field :name, type: String
embeds_many :addresses
end
class Address
include Mongoid::Document
field :street, type: String
embedded_in :user
end
我的应用将使用REST API创建/删除/更新用户以及地址。
但是,当用户想要添加新地址或从现有用户帐户中删除新地址时。我需要逐个比较当前地址列表,看看它是新地址还是旧地址才能进行更新操作;这种方法非常繁琐。
另一个选择是为自己设置一组REST API。但是,我不想在地址模型中使用REST API,因为我可以预见会有很多基于需求的嵌入式文档。
只是想知道更新嵌入式文档的最佳选择是什么?
由于
答案 0 :(得分:1)
您是否拥有单独的地址资源或将其添加到更新用户,请确保它与您的前端/ API消费者合作。
例如,如果您使用ember js(具体为ember-data),则 使用户更新中的地址操作 导致ember-数据不支持将嵌入资源作为前端独立模型(AFAIK)...
所以虽然我更喜欢将地址作为一个单独的资源,并将其视为未嵌入,您必须确保您选择的设计/解决方案能够在完整的堆栈中工作强>
答案 1 :(得分:0)
通常最好理解,如果您有繁琐的要求,有时需要繁琐的实施。话虽这么说,我会有一个地址端点,并将它们视为未嵌入,在用户上搜索它们(通过id或其他标识符),删除,更新或创建它们,如果它没有嵌入。