后台更新 denormalization 化数据的方案
这里说的 denormalization 是参照 http://blog.mongodb.org/post/87892923503/6-rules-of-thumb-for-mongodb-schema-design-part-2 给出的建议.
为了保持数据的一致性, 下面的一个 Message 对象, 当 creator 属性更新之后, Message 中的对应信息也应该进行更新.
{
"__v": 0,
"_id": "55ddc3c44b7e984203c33451",
"chatroom": "55dd1c7c54c8365d527b2e0b",
"creationTime": "2015-08-26T13:48:52.622Z",
"creator": {
"username": "Pocoyo",
"avatar": "4A90B80ADFAB4FB283FFF404DB216791/55dc35abbedda6c61bbb64f0_20150825175448.jpg",
"_id": "55dc35abbedda6c61bbb64f0"
},
"mentions": [],
"msg": "John"
}
通常的办法是什么?
2 回复
ref指向一个对象,形成1:n
@i5ting 这样我有些 DELETE(findByIdAndRemove), PUT(findByIdAndUpdate) 类型的接口返回的文档 creator 字段还是 ObjectID, 那可能会导致每次返回的对象字段值类型不一样.
当然了我也可以每次操作都 populate 一次, 但这样似乎也不太好. 这时我想到要自动 populate, 于是有个 mongoose-autopopulate 包, 不过才 18 个 star, 有点心虚呃. 感觉主流方法应该不是这样子的.